首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态展开列表

动态展开列表
EN

Stack Overflow用户
提问于 2018-01-03 19:10:55
回答 3查看 686关注 0票数 1

我在列表理解中动态地创建地图,然后尝试在每次迭代中将生成的映射附加到列表中。

这是一个代码:

代码语言:javascript
复制
 result = []
 temp_map = %{}

 for n <- 1..number do
   temp_map = Map.put_new(temp_map, :title, Enum.at(titles, n))
   temp_map = Map.put_new(temp_map, :content, Enum.at(contents, n))

   result = result ++ [temp_map]
 end

但是,该代码返回如下:

代码语言:javascript
复制
[[%{contents: "cont-2", title: "tit-2"}], [%{contents: "cont-2", title: nil}]]

我的想法是列出这些清单:

代码语言:javascript
复制
titles = ["title-1", "title-2"]
contents = ["content-1", "content-2"]

生成如下结构:

代码语言:javascript
复制
[%{title: "title-1", content: "content-1"}, %{title: "title-2", content: "content-2"}]

我只需要添加一些动态列表。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-01-03 19:30:24

您不能在这样的理解(或其他地方)中使用临时变量,因为如果您不习惯,那么Elixir的不可变性会给您带来意想不到的结果。

示例

代码语言:javascript
复制
items = ["foo", "bar", "baz"]

i = 0

for item <- items do
  i = i + 1
  IO.puts i
end

威尔输出

代码语言:javascript
复制
1
1
1

解决方案:

我会尝试这样的方法(使用Enum.zip/2):

代码语言:javascript
复制
titles = ["title-1", "title-2"]
contents = ["content-1", "content-2"]

result = 
  Enum.zip(titles, contents)
  |> Enum.map(fn {title, content} -> %{title: title, content: content} end)

票数 2
EN

Stack Overflow用户

发布于 2018-01-03 19:28:12

以面向对象的方式思考,一种更实用、更正确的方法是将Enum.zip/2Enum.map/2结合使用。

代码语言:javascript
复制
titles = ["title-1", "title-2"]
contents = ["content-1", "content-2"]

result = Enum.zip(titles, contents) 
  |> Enum.map(fn {title, content} -> %{title: title, content: content} end)

# result: 
# [%{content: "content-1", title: "title-1"},
#  %{content: "content-2", title: "title-2"}]
票数 1
EN

Stack Overflow用户

发布于 2018-01-04 06:34:45

我将用理解的方法给出答案:

代码语言:javascript
复制
for {t, c} <- Enum.zip(titles, contents),
  do: %{title: t, content: c}
#⇒ [
#  %{content: "content-1", title: "title-1"},
#  %{content: "content-2", title: "title-2"}
# ]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48083691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档