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
Ответы
Ответ 1
b += (1,1,1)
интерпретируется как
b.+=(1,1,1)
который выглядит как вызов функции, передающий три параметра в +
Добавление другой пары символов означает, что она интерпретируется как
b.+=((1,1,1))
который передает ожидаемый кортеж.
Объявление аргумента отдельно в
val i = (1,1,1)
также не имеет такой интерпретации, так что тоже хорошо.