模式匹配函数头部的表达式

时间:2017-03-18 17:43:59

标签: erlang

为什么你不能这样做:

r() ->
     10.

result(r()) ->
    match;
result(_) ->
    no_match.

错误:非法模式。

1 个答案:

答案 0 :(得分:0)

Erlang参考手册提供了有关无法实现此目的的更多信息。 It specifies that

  

每个参数都是一种模式。

Additionally

  

模式与术语具有相同的结构,但可以包含未绑定的变量。

And it defines a term as

  

任何数据类型的数据称为术语。

总之:函数调用不是一个术语,因此不是一个模式。由于它不是模式,因此不能在模式匹配中使用,因此不能在函数子句中使用。