缺点单元格

Elixir 中的列表是链表。这意味着列表中的每个项目都包含一个值,后跟指向列表中下一个项目的指针。这是使用 cons 单元在 Elixir 中实现的。

缺陷单元是具有值的简单数据结构,或

可以在列表中的最后一项之前添加|符号,以标记具有给定头部和尾部的(不正确的)列表。以下是单个 cons 单元格,其中 1 为头部,2 为尾部:

[1 | 2]

列表的标准 Elixir 语法实际上等同于编写一组嵌套的 cons 单元格:

[1, 2, 3, 4] = [1 | [2 | [3 | [4 | []]]]]

空列表 [] 用作 cons 单元的尾部以表示列表的结尾。

Elixir 中的所有列表都相当于 [head | tail] 的形式,其中 head 是列表中的第一项,tail 是列表的其余部分,减去头部。

iex> [head | tail] = [1, 2, 3, 4]
[1, 2, 3, 4]
iex> head
1
iex> tail
[2, 3, 4]

使用 [head | tail] 表示法对递归函数中的模式匹配很有用:

def sum([]), do: 0

def sum([head | tail]) do
  head + sum(tail)
end