erlang - Erlang 中的模式 [_|_] 有什么具体含义吗?

标签 erlang

我正在从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 匹配。因此,由于模式 _ 匹配任何内容,因此 [_ | _] 匹配任何非空列表。

另一方面,

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

关于erlang - Erlang 中的模式 [_|_] 有什么具体含义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30961510/

相关文章:

sockets - Erlang:进程何时终止以及 gen_tcp:controlling_process(Socket, Pid) 是如何工作的?

erlang - 无需 root 权限即可安装 libssl-dev 和 libncurses5-dev

erlang - "string_to_term/1"?

database - CouchBase 1.8 和 2.0 Erlang SDK?为什么 Erlang 被排除在外

json - Erlang JSON API 数据生命周期

windows - Docker 容器在启动后立即关闭

erlang - 内存症 : delete rows with key other than primary key used to insert

erlang - 如何解决`非法指令: 4` crash of elixir package

erlang - 为什么 filelib :is_dir and filelib:is_regular functions doesn't work properly with files and folder that contain blank space?

Java Web 应用程序监控和容错