2012-04-13 8 views
8

Mientras reviso la documentación scala (Play Docs) del marco de juego, vi una sintaxis que nunca había visto antes.¿Qué es la lista [String ~ Int]?

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

Podría alguien por favor dígame lo que hace "~" en List[String~Int] quiere decir?

Respuesta

22

puede ser este willl ayudar:

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

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

En realidad, ~ no es una parte de la biblioteca estándar, esto es una clase genérica del marco de juego, lo que permite una notación infija. En scala, cualquier clase genérica que tome 2 parámetros genéricos puede usarse con una notación infija. Por ejemplo, el siguiente también funciona:

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

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

En su caso, se encuentra la definición de ~ en el Play framework API.

+0

wow! eso fue rápido. Y gracias, ese ejemplo ayuda. – rahul

+0

De nada. Por cierto, puede aceptar la respuesta si se ajusta a sus necesidades. ;) – Nicolas

+0

En realidad, no es una clase de Juego. Viene de la biblioteca estándar de Scala (específicamente, la biblioteca de los combinadores de analizadores). Aquí está [el scaladoc] (http://www.scala-lang.org/api/current/index.html#scala.util.parsing.combinator.Parsers$$tilde). –

Cuestiones relacionadas