I stumbled across a pretty interesting behavior in Scala.
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
This also works the other way round:
scala> Some(1,2,3,4,5)
res31: Some[(Int, Int, Int, Int, Int)] = Some((1,2,3,4,5))
While this sugar is extremely useful I did not find any documentation concerning this. So my question is basically: Where is this documented in the Scala Language Specification, and what other implications does this have if any.
Regards, raichoo
It is known a Automatic Tupling. I lodged a bug against the language specification, which is silent on this matter.
Here's the relevant part of the compiler source code.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With