Подтвердить что ты не робот

Преобразовать целое число в строку в Erlang

Я знаю, что строки Erlang следует избегать любой ценой...

но если я этого не делаю, как мне создать "5" из 5?

в частности, есть ли что-то вроде io: format ( "~ p", [5]), которое вернет форматированную строку вместо печати в поток?

4b9b3361

Ответ 1

Возможно, это не самый простой способ, но он работает:

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

EDIT: я обнаружил, что полезная функция:

%% 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 (в ответ на комментарии): вышеупомянутая функция появилась из небольшой программы, которую я написал некоторое время назад, чтобы узнать Erlang. Я искал функцию форматирования строк и нашел поведение io_lib:format/2 внутри erl контр-интуитивно понятным, например:

1> io_lib:format("2 + 2 = ~p", [2+2]).
[50,32,43,32,50,32,61,32,"4"]

В то время я не знал о "автоматическом выравнивании" поведения устройств вывода, упомянутых @archaelus, и поэтому пришел к выводу, что вышеуказанное поведение не было тем, что я хотел.

В этот вечер я вернулся к этой программе и заменил вызовы на функцию string_format выше с помощью io_lib:format. Единственные проблемы, которые это вызвали, - это несколько тестов EUnit, которые потерпели неудачу, потому что они ожидали сплющенной строки. Они были легко исправлены.

Я согласен с @gleber и @womble, что использование этой функции является излишним для преобразования целого в строку. Если это все, что вам нужно, используйте integer_to_list/1. ПОЦЕЛУЙ!

Ответ 2

Там также integer_to_list/1, который делает именно то, что вы хотите, без уродства.

Ответ 3

Строка представляет собой список:

9> integer_to_list(123).  
"123"

Ответ 4

В стороне, если вам когда-либо понадобится строковое представление поплавков, вы должны посмотреть на work, который сделал Боб Ипполито mochinum.

Ответ 5

списки: CONCAT ([Number]). также работает.