Ce qui suit est probablement pas la plus élégante, mais elle fonctionne:
1> lists:flatten(io_lib:format("~p", [35365])).
"35365"
EDIT: j'ai trouvé que la fonction suivante est utile:
%% string_format/2
%% Like io:format except it returns the evaluated string rather than write
%% it to standard output.
%% Parameters:
%% 1. format string similar to that used by io:format.
%% 2. list of values to supply to format string.
%% Returns:
%% Formatted string.
string_format(Pattern, Values) ->
lists:flatten(io_lib:format(Pattern, Values)).
EDIT 2 (en réponse aux commentaires): la fonction ci-dessus est venu à partir d'un petit programme que j'ai écrit un temps d'apprendre Erlang. J'étais à la recherche d'une chaîne de mise en forme de la fonction et a trouvé le comportement de l' io_lib:format/2
dans erl
contre-intuitif, par exemple:
1> io_lib:format("2 + 2 = ~p", [2+2]).
[50,32,43,32,50,32,61,32,"4"]
À l'époque, j'étais pas au courant de l '" auto-aplatissement par le comportement des périphériques de sortie mentionné par @archaelus et ils en ont conclu que le comportement n'était pas ce que je voulais.
Ce soir, je suis retourné à ce programme et l'a remplacé les appels à l' string_format
fonction ci-dessus avec io_lib:format
. Les seuls problèmes que cela a causé quelques EUnit les tests qui ont échoué parce qu'ils étaient attendent à une stagnation de la chaîne. Elles ont été facilement résolu.
Je suis d'accord avec @gleber et @traces womble que l'utilisation de cette fonction est overkill pour la conversion d'un entier en chaîne de caractères. Si c'est tout ce dont vous avez besoin, integer_to_list/1
. KISS!