2017-01-21 3 views
2

Erlangではどのようにこのように一致させることができますか?Erlangのマッチングマップ

#{o => 0} = maps:put(o, 0, maps:new()). 
"Illegal pattern" 

私がerlangシェルで読むことができる値は同等です。なぜ一致しないのですか?

答えて

6
#{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>