Elixir 的 集合操作问题
Elixir小白一个。话不多说,直入主题。
对于下面的page中的entries,如何优雅的插入:obj_c => "obj_c"而不适用中间变量呢。
page = %{
:page_size => "1",
:page_total=> "10",
:entries => [
%{
:obj_a => "obj_a",
:obj_b => "obj_b"
# 这里要插入:obj_c => "obj_c"
},
%{
:obj_a => "obj_a",
:obj_b => "obj_b",
# 这里要插入:obj_c => "obj_c"
}
]
}
使用中间变量的方法
entry_new = Enum.map(
page.entries,
fn x -> Map.put(x, :obj_c, "obj_c") end
)
page = Map.put(page, :entries, entry_new)
不适用中间变量的方法
# 尝试一 不报错。但是page没有改变。这是为什么呢
page.entries
|> Enum.map(fn x -> Map.put(x, :obj_c, "obj_c" end)
# 尝试二 直接报错。page.entries 这里会被认为是函数,好奇怪。
page.entries = page.entries
|> Enum.map(fn x -> Map.put(x, :obj_c, "obj_c" end)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你好, 你这个使用中间变量的方法也是不能编译的吧...
使用中间变量应该这么写:
不使用中间变量的方法: