列表上的模式匹配
你還可以在 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