2010-08-19 13 views
9

En Scala (2.7.7final), el método Predef.println se define como que tiene la siguiente firma:En Scala, ¿cómo es que `println (1,2)` funciona?

def println (x : Any) : Unit 

¿Cómo es que, después de que las siguientes obras:

scala> println(1,2) 
(1,2) 

¿El compilador convierten automáticamente una lista de argumentos separados por comas en un Tuple? ¿Por qué magia? ¿Hay una conversión implícita pasando aquí, y si es así, cuál?

Respuesta

11

Sí, el compilador intentará convertir los argumentos separados por comas en tuplas, si no hay métodos apropiados de argumentos múltiples y un único método apropiado de un argumento. No es una conversión implícita, solo un truco de compilación. Esta es una característica un tanto controvertida, y probablemente experimentará cambios en el futuro, ya que el trabajo se planifica para unificar el tratamiento de las tuplas y las listas de argumentos.

+0

¿Alguien podría proporcionar una referencia a la controversia? Me gustaría ver a dónde va esto. –

+0

Ah, http://scala-programming-language.1934581.n4.nabble.com/Unifying-Tuple-types-and-function-parameters-td2012123.html es un comienzo. –

Cuestiones relacionadas