我怎么能在Erlang中这样匹配?
#{o => 0} = maps:put(o, 0, maps:new()). "Illegal pattern"
从我在erlang shell中可以读到的内容来看,这些值是等价的.为什么我不匹配?
#{o := 0} = maps:put(o, 0, maps:new()).
该符号=>
用于创建键值对,该符号:=
适用于现有键.所以前面的表达式对模式匹配有效,以下内容对比较有效(比较的两边是等价的):
#{o => 0} == maps:put(o, 0, maps:new()). 1> #{o := 0} = #{o => 0,i => 1}. % will match #{i => 1,o => 0} 2> #{o := 0} = #{o => 2,i => 1}. % will not match ** exception error: no match of right hand side value #{i => 1,o => 2} 3> #{o => 0} == #{o => 0,i => 1}. % is false false 3>