在以下示例中,我Enum.map
列表,根据某些条件,我可以收到单个项目或项目列表。
如果我只收到一个项目,我将结束列表。
但是,如果我还收到另一个列表,我会找到一个嵌套列表。
defmodule TestQuery do
def build_query() do
Enum.map(["test1", "test2", "hello"], fn item ->
query(item)
end)
end
def query(item) do
case String.contains? item, "test" do
true -> 1
false -> [2, 3]
end
end
end
iex(2)> TestQuery.build_query
[1, 1, [2, 3]]
如何将false
上的列表输出合并为一个列表? [1,1,2,3]
在true
中查询我查询一个项目并在false
我查询多个项目,但我想将它们加入到同一个列表中。
答案 0 :(得分:2)
将您的build_query/0
重写为:
def build_query() do
["test1", "test2", "hello"] # this is a style change only
|> Enum.map(fn item -> query(item) end)
|> List.flatten # here's the thing that make this list flat
end
查看List.flatten
上的文档:https://hexdocs.pm/elixir/List.html#flatten/1