Erlang 中的模式 [_|_] 有什么具体含义吗?
Does the pattern [_|_] in Erlang mean anything specific?
我正在从 Learn You Some Erlang 学习 Erlang,我已经看过模式 [_|_]
两次,但找不到任何相关信息。这种用法似乎是多余的,因为从 (1) 中省略它并在 (2) 中用 _ 替换它会产生相同的结果而不会降低可读性。这是我使用 Erlang 的第一周,所以我可能完全错了。
(1) 来自 bestest_qsort:
bestest_qsort(L=[_|_]) ->
bestest_qsort(L, []).
(2) 来自 here:
error:{badmatch,[_|_]} -> ok
模式 [p1 | p2]
匹配一个非空列表,其头部与模式 p1
匹配,尾部与模式 p2
匹配。因此,由于模式 _
匹配任何内容,因此 [_ | _]
匹配任何非空列表。
另一方面,_
本身匹配任何内容,包括空列表。
我正在从 Learn You Some Erlang 学习 Erlang,我已经看过模式 [_|_]
两次,但找不到任何相关信息。这种用法似乎是多余的,因为从 (1) 中省略它并在 (2) 中用 _ 替换它会产生相同的结果而不会降低可读性。这是我使用 Erlang 的第一周,所以我可能完全错了。
(1) 来自 bestest_qsort:
bestest_qsort(L=[_|_]) ->
bestest_qsort(L, []).
(2) 来自 here:
error:{badmatch,[_|_]} -> ok
模式 [p1 | p2]
匹配一个非空列表,其头部与模式 p1
匹配,尾部与模式 p2
匹配。因此,由于模式 _
匹配任何内容,因此 [_ | _]
匹配任何非空列表。
_
本身匹配任何内容,包括空列表。