Bạn thậm chí có thể viết:
val head :: tail = List(1, 2, 3)
Về cơ bản bất cứ điều gì mà một mô hình dự kiến (chuyển nhượng, một tuyên bố match
hoặc một dòng trong một cho-hiểu) có thể mất một vắt, đó là được định nghĩa là một thực thể với phương thức unapply
.
Một trong những miếng đường cú pháp mà scala cung cấp cho bạn là; nếu bạn có một bộ giải nén X(a, b)
, điều này có thể được viết là a X b
. Dưới đây là một ví dụ với lớp trường hợp (trong đó có một vắt mặc định):
scala> case class X(a: Int, b: String)
defined class X
scala> val a X b = X(1, "two")
a: Int = 1
b: String = two
Khả năng viết các đơn vị này ghi vào kéo dài với các loại cũng như:
scala> type MappedTo[A, B] = Map[A, B]
defined type alias MappedTo
scala> def foo(m: Int MappedTo String) = m foreach println
foo: (m: MappedTo[Int,String])Unit
Lưu ý rằng trong trường hợp không, không scala giới hạn các toán tử infix đó thành các mã định danh biểu tượng
Nguồn
2011-12-29 09:08:47
Bạn có thể xem [Phân tách đối sánh Scala trên toán tử kết nối] (http://stackoverflow.com/questions/1022218/scala-match-decomposition-on-infix-operator) và [Làm thế nào là trường hợp này lớp phù hợp với p attern working?] (http://stackoverflow.com/questions/1059145/how-is-this-case-class-match-pattern-working) – 4e6