2012-04-13 45 views
8

Trong khi xem qua tài liệu scala (Play Docs) của khung chơi, tôi đã thấy một cú pháp mà tôi chưa bao giờ thấy trước đây.Danh sách [String ~ Int] là gì?

val populations:List[String~Int] = { 
    SQL("select * from Country").as(str("name") ~ int("population") *) 
} 

Ai đó có thể xin vui lòng cho tôi biết những gì hiện "~" trong List[String~Int] nghĩa là gì?

Trả lời

22

Có thể này willl giúp:

scala> class ~[A, B] 
defined class $tilde 

scala> List.empty[String~Int] 
res1: List[~[String,Int]] = List() 

Trên thực tế, ~ không phải là một phần của thư viện chuẩn, đây là một lớp học chung từ play framework, cho phép một ký hiệu ghi vào. Trong scala, bất kỳ lớp chung nào có 2 tham số chung có thể được sử dụng với một ký hiệu infix. Ví dụ, sau đây cũng làm việc:

scala> class X[A, B] 
defined class X 

scala> List.empty[String X Int] 
res1: List[X[String,Int]] = List() 

Trong trường hợp của bạn, bạn sẽ tìm thấy định nghĩa của ~ trong Play framework API.

+0

wow! nhanh quá. Và cảm ơn, ví dụ đó giúp. – rahul

+0

Bạn được chào đón. BTW, bạn có thể chấp nhận câu trả lời nếu nó phù hợp với nhu cầu của bạn. ;) – Nicolas

+0

Thực ra, đây không phải là lớp Play. Nó xuất phát từ thư viện chuẩn Scala (cụ thể là thư viện trình kết hợp phân tích cú pháp). Đây là [scaladoc] (http://www.scala-lang.org/api/current/index.html#scala.util.parsing.combinator.Parsers$$tilde). –

Các vấn đề liên quan