Erlang中的模式[_ | _]是否意味着什么特定的?

时间:2015-06-21 05:18:54

标签: erlang

我正在从Learn You Some Erlang学习Erlang,我已经两次见过[_|_]模式,但无法找到任何信息。这种用法似乎是多余的,因为从(1)中省略它并用_ in(2)中的_舍入它会产生相同的结果,而不会降低可读性。这是我与Erlang的第一周,所以我可能完全错了。

(1)来自bestest_qsort

bestest_qsort(L=[_|_]) ->
    bestest_qsort(L, []).

(2)来自here

  error:{badmatch,[_|_]} -> ok

1 个答案:

答案 0 :(得分:10)

模式[p1 | p2]匹配非空列表,其头部匹配模式p1,其尾部与模式p2匹配。因此,由于模式_匹配任何内容,[_ | _]匹配任何非空列表。

另一方面,

_本身匹配任何内容,包括空列表。