Scala:函数/方法应用程序和元组

rai*_*hoo 5 scala scala-2.8

我偶然发现了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
Run Code Online (Sandbox Code Playgroud)

这也是相反的:

scala> Some(1,2,3,4,5)     
res31: Some[(Int, Int, Int, Int, Int)] = Some((1,2,3,4,5))
Run Code Online (Sandbox Code Playgroud)

虽然这种糖非常有用,但我没有找到任何有关此问题的文件.所以我的问题基本上是:Scala语言规范中记录了哪些内容,如果有的话还有其他含义.

问候,raichoo

ret*_*nym 2

这就是所谓的自动图元组。我针对语言规范提出了一个错误,该规范对此事保持沉默。

这是编译器源代码的相关部分