Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 无法更新哈希值_Elixir - Fatal编程技术网

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