Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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 ?

like image 904
tdmadeeasy Avatar asked Dec 26 '22 23:12

tdmadeeasy


1 Answers

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 
like image 193
gourlaysama Avatar answered Jan 15 '23 23:01

gourlaysama