我如何在Erlang中这样匹配?
#{o => 0} = maps:put(o, 0, maps:new()).
"Illegal pattern"
从我在erlang shell中可以读到的内容来看,这些值是等价的。为什么我不匹配?
答案 0 :(得分:5)
=>
符号:=
用于创建键值对,符号#{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>
适用于现有键。所以前面的表达式对模式匹配有效,以下内容对比较有效(比较的两边都是等价的):
<FrameLayout
android:id="@+id/frame_parent"
android:layout_width="match_parent"
android:layout_height="match_parent" />