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

tor*_*tte 6 erlang

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

(1)来自bestest_qsort:

bestest_qsort(L=[_|_]) ->
    bestest_qsort(L, []).
Run Code Online (Sandbox Code Playgroud)

(2)从这里:

  error:{badmatch,[_|_]} -> ok
Run Code Online (Sandbox Code Playgroud)

sep*_*p2k 10

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

_ 另一方面,它本身匹配任何东西,包括空列表.

  • @toraritte试试`F([2,3])`.模式`[p]`匹配一个只包含一个元素的列表,它匹配`p`.它不匹配具有多个元素的列表(否则,例如,`[1,2]`将匹配模式`[1]`,这没有意义 - `[1] = [1,2]`应该清楚不匹配). (5认同)