{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