← Về danh sách bài học
Bài 3/20
💧 Bài 3: Pattern Matching
🎯 Sau bài học này, bạn sẽ:
- Hiểu Pattern Matching là gì
- Destructure data với pattern matching
- Sử dụng pin operator ^
1. Pattern Matching cơ bản
Trong Elixir, = không phải là assignment mà là match operator.
# Basic matching
x = 1 # x matches với 1
1 = x # 1 matches với x (= 1)
2 = x # Error! 2 không match với 1
# Tuple matching
{a, b, c} = {:hello, "world", 42}
# a = :hello, b = "world", c = 42
2. List Pattern Matching
[head | tail] = [1, 2, 3, 4]
# head = 1, tail = [2, 3, 4]
[a, b | rest] = [1, 2, 3, 4, 5]
# a = 1, b = 2, rest = [3, 4, 5]
3. Pin Operator ^
x = 1
^x = 1 # Match: sử dụng giá trị hiện tại của x
^x = 2 # Error! 2 không match với 1
# Useful trong case statements
case {1, 2} do
{^x, 2} -> "matched!"
_ -> "not matched"
end
📝 Tóm Tắt
- = là match operator, không phải assignment
- Có thể destructure tuples, lists, maps
- Pin operator ^ giữ nguyên giá trị để match