{status, body} = File.read("/etc/hosts")
if status == :ok do
hosts = String.split body, "\n"
hosts = Enum.map(hosts, fn(host) -> line_to_host(host) end)
else
IO.puts "error reading: /etc/hosts"
end
У меня есть следующая функция elixir, где я читаю файл /etc/hosts и пытаюсь разбить его по строкам с помощью String.split.
Затем я просматриваю список строк хостов и вызываю line_to_host (хост) для каждого. Метод line_to_host разбивает строку на " ", а затем я хочу установить переменную from и to:
def line_to_host(line) do
data = String.split line, " "
from = elem(data, 0) // doesn't work
to = elem(data, 1) // doesn't work either
%Host{from: from, to: to}
end
Я просмотрел stackoverflow, elixir docs и googled о том, как получить элемент списка по определенному индексу.
Я знаю, что есть head/tail, но должен быть лучший способ получить элементы списка.
elem(list, index) делает именно то, что мне нужно, но, к сожалению, он не работает с String.split.
Как получить элементы списка/кортежа по ID в elixir