Как присоединить список целых чисел к строке в Erlang? - PullRequest
0 голосов
/ 21 марта 2020

У меня есть список целых чисел:

X = [1, 2, 3, 4, 5, 6].

Я хотел бы получить строку "1 2 3 4 5 6" в качестве вывода.

Я пробовал string:join(X, " "), но это не не работает.

Я также пытался _X = lists:join(X, " "),, но это приводит к пустой строке "". Когда я его печатаю erlang:display(_X).

Есть ли в Эрланге встроенный метод, который это делает?

1 Ответ

2 голосов
/ 21 марта 2020

Оба string:join/2 и lists:join/2 будут давать желаемый результат, но оба требуют, чтобы целые числа были сначала преобразованы в строки. Для этого можно использовать понимание списка:

1> X = [1, 2, 3, 4, 5, 6].
[1,2,3,4,5,6]
2> string:join([integer_to_list(I) || I <- X], " ").
"1 2 3 4 5 6"
3> lists:join(" ", [integer_to_list(I) || I <- X]).
["1"," ","2"," ","3"," ","4"," ","5"," ","6"]
4> lists:flatten(lists:join(" ", [integer_to_list(I) || I <- X])).
"1 2 3 4 5 6"

Обратите внимание, что lists:join/2 принимает разделитель в качестве первого аргумента, а string:join/2 принимает его в качестве второго аргумента.

Также обратите внимание что lists:join/2 возвращает новый список, в котором элементы списка ввода разделены разделителем. Чтобы получить плоский список, когда, как в данном случае, разделитель также является списком, используйте lists:flatten/1, как показано в последней команде выше.

И, наконец, обратите внимание, что string:join/2 устарело , и вместо него следует использовать lists:join/2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...