2012-08-25 18 views

Respuesta

48

Map and Set no tiene ningún concepto de anteponer (+:) o anexar (:+), ya que no están ordenados. Para especificar cuál (agregar o anteponer) usa, se agregó :.

scala> Seq(1,2,3):+4 
res0: Seq[Int] = List(1, 2, 3, 4) 

scala> 1+:Seq(2,3,4) 
res1: Seq[Int] = List(1, 2, 3, 4) 

No se confunda por el orden de los argumentos, en la Scala si el método termina con: it get's applied in reverse order (no a.method (b), pero b.method (a))

+0

Gracias, gran respuesta. Esto tiene mucho sentido. Debería haberlo averiguado por mi cuenta :) – thesamet

19

FYI, el aceptada la respuesta no es la razón en absoluto. Esta es la razón.

% scala27 
Welcome to Scala version 2.7.7.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_06). 

scala> Set(1, 2, 3) + " is the answer" 
res0: java.lang.String = Set(1, 2, 3) is the answer 

scala> List(1, 2, 3) + " is the answer" 
warning: there were deprecation warnings; re-run with -deprecation for details 
res1: List[Any] = List(1, 2, 3, is the answer) 

Nunca subestime cuánto duran los zarcillos de algo así como any2stringadd.

+5

Para ser más claro, esto se debe a que List es covariante, pero Set es invariante, y ese es el problema más grande, en mi opinión, que any2stringadd. –

Cuestiones relacionadas