La siguiente no es probablemente la manera más ordenada, pero funciona:
1> lists:flatten(io_lib:format("~p", [35365])).
"35365"
EDIT: He encontrado que la siguiente función resulta muy útil:
%% 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 respuesta a los comentarios): la función anterior proviene de un pequeño programa que escribí hace un tiempo para aprender Erlang. Yo estaba buscando una función de cadena de formato y encontré el comportamiento de io_lib:format/2
dentro erl
contrario a la intuición, por ejemplo:
1> io_lib:format("2 + 2 = ~p", [2+2]).
[50,32,43,32,50,32,61,32,"4"]
En ese momento, no era consciente de la 'auto-aplanamiento' comportamiento de los dispositivos de salida mencionado por @archaelus y así concluyó que el comportamiento anterior no era lo que yo quería.
Esta tarde, volví a este programa y reemplacé las llamadas a la función string_format
anterior con io_lib:format
. Los únicos problemas que esto causó fueron unas pocas pruebas EUnit que fallaron porque esperaban una cadena aplanada. Estos fueron arreglados fácilmente.
Estoy de acuerdo con @gleber y @womble que el uso de esta función es un exceso para convertir un entero a una cadena. Si eso es todo lo que necesita, use integer_to_list/1
. ¡BESO!
¿Evitado a toda costa? ¿De dónde sacaste esa idea? Existen algunos problemas de rendimiento y otras molestias, pero siguen siendo un tipo de datos básicos y la opción predeterminada para las cadenas. – cthulahoops
Hablo con la lengua en la mejilla. Si creía firmemente que nunca deberías usarlos, no habría hecho esta pregunta. Por otro lado, describirlos como un "tipo de datos básicos" podría estar estirando las cosas un poco, en mi opinión. – collapsinghrung
cadena en erlang es una lista. es el tipo de datos básicos. lo mismo que binario o átomo. – Worker