列表上的模式匹配
你还可以在 Elixir 数据结构(例如列表)上进行模式匹配。
清单
匹配列表非常简单。
[head | tail] = [1,2,3,4,5]
# head == 1
# tail == [2,3,4,5]
这通过将列表中的第一个(或更多)元素与|
(管道)的左侧和列表的其余部分匹配到|
的右侧变量来工作。
我们还可以匹配列表的特定值:
[1,2 | tail] = [1,2,3,4,5]
# tail = [3,4,5]
[4 | tail] = [1,2,3,4,5]
** (MatchError) no match of right hand side value: [1, 2, 3, 4, 5]
还允许绑定|
左侧的多个连续值:
[a, b | tail] = [1,2,3,4,5]
# a == 1
# b == 2
# tail = [3,4,5]
更复杂 - 我们可以匹配特定值,并将其与变量匹配:
iex(11)> [a = 1 | tail] = [1,2,3,4,5]
# a == 1