What does :+= method do defined for scala.collection.immutable.Vector?
scala
Solution
Scala sequences have three operators that produce new sequences by adding something to an old sequence: `++`, `+:` and `:+`. The `++` operator simply concatenates a Scala sequence with another (or a traversable). The other two prepend and append elements, respectively.
The peculiar syntax of `+:` and `:+` is due to the way they are used. Any operator ending with `:` applies to the object on the right, not on the left. That is:
1 +: Seq.empty == Seq.empty.+:(1)
By symmetry, the other operator is `:+`, though the colon is meaningless in that case. This let you write things like this:
scala> 1 +: 2 +: 3 +: Seq.empty :+ 4 :+ 5 :+ 6
res2: Seq[Int] = List(1, 2, 3, 4, 5, 6)
Note how the elements being added end up in the exact same position as they appear in the expression. This makes it easier to visualize what's happening.
Now, you have `:+=`, not any of the above. As it happens, Scala allows one to concatenate any operator with `=` to make up a get-and-set operation. So the common increment expression:
x += 1
Actually means
x = x + 1
Likewise,
v1 :+= ""
means
v1 = v1 :+ ""
which creates a new vector by appending the empty string to the old vector, and then assigns it to `v1`.
Problem
given the following scala code: ``` var v1 = Vector("foo") v1 :+= "" ``` What does `:+=` do, how is it different from `+=` and where is it defined? Thanks! PS: Yes, i did search on this, but didn't found anything. Found trough this (http://simply.liftweb.net/index-2.3.html#prev) tutorial.