为什么以下两个可以创建列表的表达式在Erlang中返回不同的结果?
> ["A" | []]
// returns ["A"]
> [[] | "A"]
// returns [[], 65]
Run Code Online (Sandbox Code Playgroud)
我期待第二个表达式返回与第一个表达式相同的结果.谁能解释为什么会这样?
要正确理解其工作原理,请记住所有这些表达式都遵循以下模式:
[head | tail]
Run Code Online (Sandbox Code Playgroud)
where head是单个元素,tail是另一个列表.
还要注意字符串是字符列表,即"A"实际上等于[65].
因此,在第一种情况下,创建一个头部"A"和尾部的列表[],并按预期转变为["A"].
然而,在第二种情况下,头部[]和尾部"A"是相等的[65].因此,结果是head element([])加上tail(65)中的所有元素.
| 归档时间: |
|
| 查看次数: |
150 次 |
| 最近记录: |