逗号和|的区别在二郎
The difference between comma and | in erlang
我正在尝试创建一个 returns 列表最后一个元素的函数。
不过这里有点奇怪。
last([X,[]]) -> X;
last([_X|Xs]) -> last(Xs).
这 returns 一个不匹配的子句错误。但是,如果我将第一行更改为 last([X|[]]) -> X;
,它将正常工作。我认为两条线的意思相同,但显然有不同的结果。我在这里错过了一些重要的东西吗?
逗号分隔列表元素,而 |
分隔列表的头部和尾部。 [X,[]]
是两个元素的列表,X
和空列表 []
。但是 [X|[]]
是一个包含一个元素的列表,X
,尾部为空。
顺便说一句,您可能只使用 lists:last/1
而不是编写自己的函数。
我正在尝试创建一个 returns 列表最后一个元素的函数。 不过这里有点奇怪。
last([X,[]]) -> X;
last([_X|Xs]) -> last(Xs).
这 returns 一个不匹配的子句错误。但是,如果我将第一行更改为 last([X|[]]) -> X;
,它将正常工作。我认为两条线的意思相同,但显然有不同的结果。我在这里错过了一些重要的东西吗?
逗号分隔列表元素,而 |
分隔列表的头部和尾部。 [X,[]]
是两个元素的列表,X
和空列表 []
。但是 [X|[]]
是一个包含一个元素的列表,X
,尾部为空。
顺便说一句,您可能只使用 lists:last/1
而不是编写自己的函数。