Das folgende ist wahrscheinlich nicht der sauberste Weg, aber es funktioniert:
1> lists:flatten(io_lib:format("~p", [35365])).
"35365"
EDIT: Ich habe festgestellt, dass die folgende Funktion in nützlich kommt:
%% 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 (als Reaktion auf Kommentare): Die obige Funktion kam von einem kleinen Programm, das ich vor einiger Zeit geschrieben habe, um Erlang zu lernen. Ich war für eine String-Formatierung Funktion suchen und das Verhalten von io_lib:format/2
innerhalb erl
kontraintuitiv gefunden, zum Beispiel:
1> io_lib:format("2 + 2 = ~p", [2+2]).
[50,32,43,32,50,32,61,32,"4"]
Zu der Zeit weiß mich nicht, das "auto-Abflachen Verhaltens von Ausgabegeräten erwähnt von @archaelus und kam zu dem Schluss, dass das oben genannte Verhalten nicht das war, was ich wollte.
Heute Abend ging ich zurück zu diesem Programm und ersetzte Anrufe auf die string_format
Funktion oben mit io_lib:format
. Die einzigen Probleme, die dies verursachten, waren einige EUnit-Tests, die fehlgeschlagen waren, weil sie eine abgeflachte Zeichenfolge erwarteten. Diese waren leicht zu reparieren.
Ich stimme @gleber und @womble zu, dass die Verwendung dieser Funktion Overkill zum Konvertieren einer Ganzzahl in eine Zeichenfolge ist. Wenn das alles ist, was Sie brauchen, verwenden Sie integer_to_list/1
. KUSS!
Um jeden Preis vermieden? Woher hast du diese Idee? Es gibt einige Leistungsbedenken und andere Belästigungen, aber sie sind immer noch ein Kerndatentyp und die Standardauswahl für Zeichenfolgen. – cthulahoops
Ich spreche mit der Zunge. Wenn ich fest daran geglaubt hätte, dass Sie sie niemals benutzen sollten, hätte ich diese Frage nicht gestellt. Auf der anderen Seite könnte es meiner Meinung nach ein bisschen weit gehen, sie als "Core Data Type" zu bezeichnen. – collapsinghrung
string in erlang ist eine Liste. Dies ist der Kerndatentyp. das gleiche wie binär oder atom. – Worker