2013-07-29 40 views
4

在Scala中,元组追加到缓冲区中斯卡拉

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) 

无法编译?

回答

10

由于您没有添加Tuple,您呼叫的+=方法有两个参数:

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

并且该方法is defined都与可变参数和无,并增加了它被赋予了缓冲的一切:

def +=(elem: A): ArrayBuffer.this.type 
def +=(elem1: A, elem2: A, elems: A*): ArrayBuffer.this.type