Scala: применение функции / метода и кортежи - PullRequest
5 голосов
/ 24 февраля 2011

Я наткнулся на довольно интересное поведение в 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

Это также работает наоборот:

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

Хотя этот сахар чрезвычайно полезен, я не нашел никакогодокументация по этому вопросу.Итак, мой вопрос в основном: где это задокументировано в Спецификации языка Scala, и какие другие последствия это имеет, если таковые имеются.

С уважением, raichoo

1 Ответ

2 голосов
/ 26 февраля 2011

Известен автоматический тьюплинг.Я подал ошибку в спецификации языка, которая ничего не говорит по этому вопросу.

Вот соответствующая часть исходного кода компилятора.

...