4

在斯卡拉,

test("Appending a tuple to a Buffer"){
    val buffer = ArrayBuffer[Int]()
    val aTuple = (2, 3)
    println(buffer += (2, 3))  // Result : ArrayBuffer(2, 3)
    println(buffer += aTuple )  // doesn't compile
}

为什么线

println(buffer += (2, 3))  

工作,但线

println(buffer += aTuple ) 

不编译?

4

1 回答 1

10

因为您没有添加 a ,所以您使用两个参数Tuple调用该方法:+=

buffer += (3, 4)
// is equivalent here to
buffer.+=(3, 4)

并且该方法使用可变参数和不使用可变参数定义,并将其提供的所有内容添加到缓冲区:

def +=(elem: A): ArrayBuffer.this.type 
def +=(elem1: A, elem2: A, elems: A*): ArrayBuffer.this.type 
于 2013-07-29T16:23:33.070 回答