在map和elixir中匹配map类型的键

在map和elixir中匹配map类型的键,elixir,Elixir,学习长生不老药的基础知识我试过这个,它达到了我的预期 gg=%{:a => 1, 2 => :b, %{ :a => 5 } => 8} gg[:a] # give 2 %{ :a => k } = gg # gives k = 2 gg[%{ :a => 5 }] # gives 8 但具体的问题是什么: %{ %{ :a => 5 } => k } = gg 我得到的错误是 ** (CompileError) hello.exs:4

学习长生不老药的基础知识我试过这个,它达到了我的预期

gg=%{:a => 1, 2 => :b, %{ :a => 5 } => 8}

gg[:a]   # give 2
%{ :a => k } = gg # gives k = 2

gg[%{ :a => 5 }] # gives 8
但具体的问题是什么:

%{ %{ :a => 5 } => k } = gg
我得到的错误是

** (CompileError) hello.exs:46: only association operators '=>' are 
allowed in map construction
    (stdlib) lists.erl:1338: :lists.foreach/2
    (elixir) lib/code.ex:363: Code.require_file/2

发生了什么事?

看起来像是长生不老药里的一只虫子。在Erlang中同样适用

1>M={{{1=>2}=>10}。
#{#{1 => 2} => 10}
2> #{1=>2}:=X}=M。
#{#{1 => 2} => 10}
3> 十,。
10
作为一种解决方法,您可以将变量用于键:

iex(1)>key=%{a:5}
%{a:5}
iex(2)>%{^key=>v}=gg
%{2=>:b,:a=>1,%{a:5}=>8}
iex(3)>v
8.
我在这里创建了错误报告: