Это сработало для меня, но только с clone (), таким образом все еще создавая новый ArrayBuffer: -)
scala> import collection.mutable.ArrayBuffer
import collection.mutable.ArrayBuffer
scala> val buf = ArrayBuffer(1,2,3,4,5,6,7,8,9,10)
buf: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
scala> buf.clone foreach { x => if (x > 4) buf -= x }
scala> buf
res1: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3, 4)
Но лучше было бы создать новый массив только из тех элементов, которыехотите удалить (таким образом не копируя весь буфер), а затем удалите их:
scala> val buf = ArrayBuffer(1,2,3,4,5,6,7,8,9,10)
buf: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
scala> buf filter { _ > 4 } foreach { buf -= _ }
scala> buf
res3: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 2, 3, 4)