我正在尝试创建一个函数,该函数返回列表的最后一个元素。但是,这里有些奇怪。
last([X,[]]) -> X;
last([_X|Xs]) -> last(Xs).
这将返回不匹配子句错误。但是,如果我将第一行更改为last([X|[]]) -> X;
它将正常工作。我认为这两行含义相同,但显然会有不同的结果。我在这里错过了重要的事情吗?
逗号分隔列表元素,而逗号分隔列表|
的头部和尾部。[X,[]]
是两个元素的列表,X
空列表[]
。而是[X|[]]
一个元素列表,X
尾部为空。
顺便说一句,您可能只使用lists:last/1
而不是编写自己的函数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句