从列表中的结构中获取值

Get a value from struct inside list

我有一个列表如下

[
  %Photos{
    url: "http://localhost:4000/test/img",
    user: "localhost:4000/test/img/123"}]

如何得到 "localhost:4000/test/img/123" 字符串形式的结果?

谁能帮我解决这个问题?

提前致谢。

如果该结构在您的控制之下,您可以实施 Access for it and use get_in/2

get_in(list, [Access.all(), :url]

此外,理解和模式匹配效果很好。

for %Photos{url: url} <- list, do: url

最后但并非最不重要的方法是 Enum.map/2

list |> Enum.map(& &1.url)

以上所有return 所有 url列表。要找到特定的,请使用 Enum.at/3 and/or 模式匹配。

假设您的列表是您引用的单个元素列表,您可以直接将其模式匹配为:

[%Photos{url: url}] = list

这会将 url 放入 url 变量中。示例:

iex(2)> list = [%Photos{url: "http://localhost:4000/test/img", user: "localhost:4000/test/img/123"}]
[...]
iex(3)> [%Photos{url: url}] = list
[
  %Photos{
    url: "http://localhost:4000/test/img",
    user: "localhost:4000/test/img/123"
  }
]
iex(4)> url
"http://localhost:4000/test/img"