如何在Elixir中按索引获取列表元素

帕斯卡·拉斯奇克(Pascal Raszyk)
{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(host)。line_to_host方法将行分割" ",然后我要设置fromandto变量:

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文档并用谷歌搜索了如何在特定索引处获取列表元素。我知道有,head/tail但是必须有一种获取列表元素的更好方法。

elem(list, index)完全满足我的需求,但不幸的是,它无法使用String.split

如何在Elixir中通过ID获取列表/元组元素

帕特里克·奥斯西

您可以为此使用模式匹配:

[from, to] = String.split line, " "

也许您想添加parts: 2选项以确保在一行中有多个空格的情况下仅得到两部分:

[from, to] = String.split line, " ", parts: 2

也有Enum.at/2,在这里可以正常使用,但是很简单。问题Enum.at在于,由于Elixir中的列表实现,它需要遍历整个列表直到所请求的索引,因此对于大型列表而言效率可能非常低。


编辑:这是带有的请求的示例Enum.at,但是在这种情况下我不会使用它

parts = String.split line, " "
from = Enum.at(parts, 0)
to = Enum.at(parts, 1)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Elixir中获取按日期排序的目录列表?

如何在DAML中按索引访问列表中的元素?

如何在Spark RDD(Java)中按索引获取元素

如何在Freemarker模板中按索引获取列表项?

如何在可选列表中的特定索引处获取元素?

如何在Scala中基于元素索引获取列表中的一组元素?

按索引从 IQueryable<anonymous> 列表中获取元素

如何在PROTRACTOR中获取元素的索引

如何在phpquery中获取元素的索引

当用数组填充列表时,如何在SwiftUI中获取列表中元素的索引?

如何在列表中获取 GameObject 索引?

列表中按索引获取元素比字典中按键获取元素更快

如何制作按索引从列表中删除元素的函数

如何在 Python 中按顺序获取列表元素的所有串联?

如何在JList中按索引编辑元素?

如何在Selenium WebDriver for Java中按索引查找元素

如何根据条件从列表中获取元素及其索引?

如何获取具有指定索引的单个列表中的元素?

如何使用 mongoDB 中的索引列表获取数组元素?

如何获取列表元组元素的列表索引

按索引值删除列表中的元素

.Net如何按计数获取列表中的公共元素

如何按类获取点击元素的索引?

在jQuery中按索引获取元素

Python列表列表如何按索引删除adjListCopy中的列表元素?

如何在带有索引的列表中打印元素?

如何在列表中从特定索引到末尾查找元素?

如何在列表中查找元素的SCSS索引?

如何在嵌套列表中查找元素的索引?