Erlang:没有右手边的值匹配

aro*_*tav 3 erlang pattern-matching

Erlang程序中的常见错误消息如下:

** exception error: no match of right hand side value 'foo'
     in function module:function/2 (file.erl, line 42)
Run Code Online (Sandbox Code Playgroud)

我该怎么调试呢?

aro*_*tav 7

以下是调试此类错误的方法:

  1. module:function/2 (file.erl, line 42)

  2. 找到肯定存在的违规匹配操作

  3. 变量替换左侧.在这里,您可能会发现您正在尝试与已绑定的变量进行模式匹配...

  4. erlang:display/1使用新变量添加调用

  5. 再次运行程序以打印此变量的值,并了解它与给定模式不匹配的原因

这里有些例子: