【问题标题】:Matching maps in ErlangErlang 中的匹配地图
【发布时间】:2017-01-21 21:00:47
【问题描述】:

如何在 Erlang 中进行这样的匹配?

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

从我在 erlang shell 中可以看出,这些值是等价的。为什么我不能匹配?

【问题讨论】:

    标签: erlang


    【解决方案1】:
    #{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>
    

    【讨论】:

      猜你喜欢
      • 2015-07-25
      • 2020-04-09
      • 2016-10-27
      • 2015-02-09
      • 2011-11-27
      • 2015-03-18
      • 2012-06-08
      • 2014-06-27
      • 1970-01-01
      相关资源
      最近更新 更多