将元组附加到Scala中的缓冲区

tdm*_*asy 4 scala scala-collections

在斯卡拉,

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
}
Run Code Online (Sandbox Code Playgroud)

为什么行

println(buffer += (2, 3))  
Run Code Online (Sandbox Code Playgroud)

工作,但行

println(buffer += aTuple ) 
Run Code Online (Sandbox Code Playgroud)

不编译?

gou*_*ama 10

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

buffer += (3, 4)
// is equivalent here to
buffer.+=(3, 4)
Run Code Online (Sandbox Code Playgroud)

并且使用varargs和without 定义该方法,并将缓冲区的所有内容添加到缓冲区中:

def +=(elem: A): ArrayBuffer.this.type 
def +=(elem1: A, elem2: A, elems: A*): ArrayBuffer.this.type 
Run Code Online (Sandbox Code Playgroud)