Quanto segue non è probabilmente il modo più grazioso, ma funziona:
1> lists:flatten(io_lib:format("~p", [35365])).
"35365"
EDIT: ho trovato che la seguente funzione è disponibile in 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 (in risposta ai commenti): la funzione di cui sopra è venuto da un piccolo programma che ho scritto qualche tempo fa per imparare Erlang. Ero alla ricerca di una funzione di stringa di formattazione e ho trovato il comportamento di io_lib:format/2
all'interno erl
contro-intuitivo, ad esempio:
1> io_lib:format("2 + 2 = ~p", [2+2]).
[50,32,43,32,50,32,61,32,"4"]
A quel tempo, ero all'oscuro del comportamento 'auto-appiattimento' di dispositivi di output menzionati da @archaelus e ha concluso che il comportamento di cui sopra non era quello che volevo.
Questa sera sono tornato a questo programma e ho sostituito le chiamate alla funzione string_format
in alto con io_lib:format
. Gli unici problemi che ciò ha causato sono stati alcuni test EUnit falliti perché si aspettavano una stringa appiattita. Questi sono stati facilmente risolti.
Sono d'accordo con @gleber e @womble che l'uso di questa funzione è eccessivo per convertire un intero in una stringa. Se è tutto ciò che serve, utilizzare integer_to_list/1
. BACIO!
fonte
2009-02-25 21:48:24
Evitato a tutti i costi? Dove hai preso quell'idea? Ci sono alcuni problemi di prestazioni e altri fastidi, ma sono ancora un tipo di dati di base e la scelta predefinita per le stringhe. – cthulahoops
Parlo con la lingua sulla guancia. Se credessi fermamente che non dovresti mai usarli, non avrei fatto questa domanda. D'altro canto, descriverli come un "tipo di dati di base" potrebbe essere un po 'lontano, a mio avviso. – collapsinghrung
string in erlang è una lista. è il tipo di dati di base. lo stesso di binario o atomo. – Worker