2011-02-23 17 views
5

Me encontré con un comportamiento bastante interesante en Scala.Scala: aplicación de función/método y tuplas

scala> def foo(t: (Int, Int, Int)): Int = t._1 
foo: (t: (Int, Int, Int))Int 

scala> foo(1,2,3) 
res23: Int = 1 

scala> foo((1,2,3)) 
res24: Int = 1 

Esto también funciona a la inversa:

scala> Some(1,2,3,4,5)  
res31: Some[(Int, Int, Int, Int, Int)] = Some((1,2,3,4,5)) 

Mientras que este azúcar es extremadamente útil no he encontrado ninguna documentación referente a esto. Así que mi pregunta es básicamente: ¿Dónde está esto documentado en la Especificación del lenguaje Scala, y qué otras implicaciones tiene esto, si alguno?

Regards, raichoo

+1

¿No '(((1,2,3)))' simplemente parens alrededor de parens en torno a un par de valores? – delnan

+0

De acuerdo, olvídate de los últimos 2 foos :) Actualización: elimínalos – raichoo

+2

Mira la respuesta proporcionada por retronym a esta pregunta 2850902 de mayo del año pasado que proporciona algunos detalles. Otras consecuencias también son discutidas. –

Respuesta