string erlang

string - convertir un entero en una cadena en Erlang



!= erlang (5)

Como punto de partida, si alguna vez necesita lidiar con la representación en cadena de flotadores, debería ver el work que Bob Ippolito ha hecho en mochinum .

Lo sé, las cuerdas de Erlang deben evitarse a toda costa ...

pero si no estoy haciendo eso, ¿cómo produzco "5" de 5?

en particular, ¿hay algo como io: format ("~ p", [5]) que devolvería una cadena formateada en lugar de imprimirla en un flujo?


Probablemente la siguiente no sea la mejor manera, pero funciona:

1> lists:flatten(io_lib:format("~p", [35365])). "35365"

EDITAR: He encontrado que la siguiente función es ú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 provino de un pequeño programa que escribí hace un tiempo para aprender Erlang. Estaba buscando una función de formato de cadena y encontré el comportamiento de io_lib:format/2 en erl contra-intuitivo, 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 del comportamiento de "auto-aplanamiento" de los dispositivos de salida mencionados por @archaelus y, por lo tanto, llegué a la conclusión de que el comportamiento anterior no era lo que quería.

Esta noche, volví a este programa y reemplacé las llamadas a la función string_format anterior con el io_lib:format . Los únicos problemas que esto causó fueron algunas pruebas de EUnit que fallaron porque esperaban una cuerda aplanada. Estos fueron fácilmente arreglados.

Estoy de acuerdo con @gleber y @womble en que usar esta función es excesivo para convertir un entero en una cadena. Si eso es todo lo que necesita, use integer_to_list/1 . ¡BESO!


También hay integer_to_list/1 , que hace exactamente lo que quieres, sin la fealdad.


Una cadena es una lista:

9> integer_to_list(123). "123"


listas: concat ([número]). tambien funciona