Bạn thấy ở đây phiên bản giới hạn mẫu khớp khi khởi tạo biến. Lưu ý rằng các công trình này không chỉ dành cho các bộ:
val a :: b = List(1,2,3)
println(a) //1
println(b) //List(2, 3)
Tính năng này dường như được vay trực tiếp từ Haskell, nơi bạn có thể sử dụng các mẫu để khởi tạo cũng như:
let (a,b) = getTuple
in a*b
Như Haskell không có dữ liệu có thể thay đổi, không có cách nào để gán cái gì đó.
Trong Scala bạn có thể làm điều gì đó như thế này, nhưng tôi đoán điều này được coi là quá khó hiểu hoặc có thể quá khó thực hiện. Bạn luôn có thể sử dụng biểu thức match
như bình thường và thường bạn chỉ cần case
, ví dụ: List((1,2),(3,4)).map{ case (a,b) => a*b }
.