tdmadeeasy
tdmadeeasy

Reputation: 306

Appending tuple to a buffer in Scala

In 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
}

Why does line

println(buffer += (2, 3))  

work, but line

println(buffer += aTuple ) 

not compile ?

Upvotes: 4

Views: 1543

Answers (1)

gourlaysama
gourlaysama

Reputation: 11280

Because you are not adding a Tuple, you are calling the += method with two parameters:

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

And that method is defined both with varargs and without, and adds to the buffer everything it is given:

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

Upvotes: 10

Related Questions