Elixir 无法更新哈希值
我有一个结构,它有一个嵌套键和另一个结构列表,我想用新值更新该嵌套键值Elixir 无法更新哈希值,elixir,Elixir,我有一个结构,它有一个嵌套键和另一个结构列表,我想用新值更新该嵌套键值 source = get_data # source.key1 is an array of structs source.key1 = Enum.each(source.key1, fn(x) -> # error is here at "=" # ... end) 错误是: cannot invoke remote function source.key1/0 inside match 这两者都不是:
source = get_data
# source.key1 is an array of structs
source.key1 = Enum.each(source.key1, fn(x) -> # error is here at "="
# ...
end)
错误是:
cannot invoke remote function source.key1/0 inside match
这两者都不是:
aa = Enum.each(source.key1, fn(x) ->
# ...
end)
source.key1 = aa # error is here
无法使用
source.key1=…
您看到的错误是在模式匹配期间尝试调用函数的结果
要更新地图,可以执行以下操作之一:
%{source | key1: aa}
如果地图中不存在key1
,则会引发此问题
或:
如果地图中不存在key1
,则不会引发此问题
您还应该注意,
Enum.each
的结果是原子:ok
,因此这将key1
设置为:ok
也许你想要一份工作
如果您有一张地图,您还应该查看它,它如下所示:
my_map = %{a: "a", "b" => b}
您可以通过以下方式访问它:
我的地图。a代表“a”
我的地图[:a]用于获取“a”
我的地图[“b”]用于获取“b”
不能为键应用atom
语法,键不是atom
要更新地图,应使用两个功能:
Map.put(my_map, "new_key", "new_value")
or
Map.update(my_map, "new_key", "init value", fn for add values) # handy in recursion loop
还有Map.update/3
,但如果钥匙不在地图中,它将引发钥匙错误
Map.put(my_map, "new_key", "new_value")
or
Map.update(my_map, "new_key", "init value", fn for add values) # handy in recursion loop