从列表中的结构中获取值
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"
我有一个列表如下
[
%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"