Подтвердить что ты не робот

Scala - добавить кортеж в listBuffer

Я хотел бы добавить три целых кортежа в ListBuffer. интуитивно, моя первая попытка - это фрагмент кода 1, который имеет синтаксическую ошибку, согласно компилятору. Затем я попробовал фрагмент 2 и 3, оба будут работать. Так может кто-нибудь объяснить мне, почему код в фрагменте 1 синтаксически неправильный.

фрагмент 1

    import scala.collection.mutable.ListBuffer
    val b : ListBuffer[(Int, Int,Int)] = ListBuffer()
    b += (1,1,1)

фрагмент 2

    import scala.collection.mutable.ListBuffer
    val b : ListBuffer[(Int, Int,Int)] = ListBuffer()
    b += ((1,1,1))

фрагмент 3

    import scala.collection.mutable.ListBuffer
    val b : ListBuffer[(Int, Int,Int)] = ListBuffer()
    val i = (1,1,1)
    b += i
4b9b3361

Ответ 1

b += (1,1,1)

интерпретируется как

 b.+=(1,1,1)

который выглядит как вызов функции, передающий три параметра в +

Добавление другой пары символов означает, что она интерпретируется как

b.+=((1,1,1))

который передает ожидаемый кортеж.

Объявление аргумента отдельно в

val i = (1,1,1)

также не имеет такой интерпретации, так что тоже хорошо.