Я хочу взять
[{'O', 'L'}, {'E', 'L'}, {'O', 'H'}, {'E', 'L'}, {'E', 'H'}]and change it to
["OL", "EL", "OH", "EL", "EH"]but I am not seeing how. Help?
Может быть так:
Enum.map(my_list, fn {a, b} -> List.to_string([a, b]) end)
Использование понимания for и интерполяции строк:
iex(1)> list = [{'O', 'L'}, {'E', 'L'}, {'O', 'H'}, {'E', 'L'}, {'E', 'H'}]
[{'O', 'L'}, {'E', 'L'}, {'O', 'H'}, {'E', 'L'}, {'E', 'H'}]
iex(2)> for {a, b} <- list, do: "#{a}#{b}"
["OL", "EL", "OH", "EL", "EH"]
Помните, что в Эликсире одинарные кавычки обозначают списки символов, поэтому 'O' != "O". Таким образом, решение вашего вопроса будет выглядеть по-разному в зависимости от того, используете ли вы одинарные кавычки (т.е. списки символов) в своих кортежах (как вы написали) или если у вас есть строки с двойными кавычками, например. [{"O", "L"}, ...]
Если вы хотите вывести списки символов, вы можете преобразовать кортежи в список, а затем соединить списки с помощью ++. Это работает, потому что 'O' и 'L' сами по себе являются списками.
iex> l = [{'O', 'L'}, {'E', 'L'}, {'O', 'H'}, {'E', 'L'}, {'E', 'H'}]
iex(5)> Enum.map(l, &Tuple.to_list/1) |> Enum.map(fn [x, y] -> x ++ y end)
['OL', 'EL', 'OH', 'EL', 'EH']
Если вы имеете дело со строками с самого начала и намеревались начать со строк в двойных кавычках, вы можете присоединиться к списку символов, используя Enum.join/2:
iex> l = [{"O", "L"}, {"E", "L"}, {"O", "H"}, {"E", "L"}, {"E", "H"}]
iex> Enum.map(l, &Tuple.to_list/1) |> Enum.map(fn chars -> Enum.join(chars) end)
["OL", "EL", "OH", "EL", "EH"]
Если вам нужно решить это точно так, как написано, вы можете добавить to_string/1 к своей конверсии:
iex> l = [{'O', 'L'}, {'E', 'L'}, {'O', 'H'}, {'E', 'L'}, {'E', 'H'}]
iex> Enum.map(l, &Tuple.to_list/1) |> Enum.map(fn [x, y] -> x ++ y |> to_string() end)
["OL", "EL", "OH", "EL", "EH"]
Ознакомьтесь с другими ответами для более элегантных/кратких преобразований.
Вы можете сделать это кратко, используя включения и оператор <<>>.
for {[a], [b]} <- list, do: <<a::utf8, b::utf8>>
Обратите внимание, что синтаксис 'A' представляет собой список символов, эквивалентный списку кодовых точек Unicode. Вы можете использовать извлеченную кодовую точку с опцией utf8 для оператора <<>> для построения соответствующей строки.