【发布时间】:2017-01-21 21:00:47
【问题描述】:
如何在 Erlang 中进行这样的匹配?
#{o => 0} = maps:put(o, 0, maps:new()).
"Illegal pattern"
从我在 erlang shell 中可以看出,这些值是等价的。为什么我不能匹配?
【问题讨论】:
标签: erlang
如何在 Erlang 中进行这样的匹配?
#{o => 0} = maps:put(o, 0, maps:new()).
"Illegal pattern"
从我在 erlang shell 中可以看出,这些值是等价的。为什么我不能匹配?
【问题讨论】:
标签: erlang
#{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>
【讨论】: