У меня есть ListBuffer. Я хочу удалить все элементы, удовлетворяющие определенному условию.
Я мог бы перебрать его и удалить каждый элемент. Но что do Scala говорит о том, что вы перебираете список, который вы повторяете? Будет ли он работать, или он удалит неправильные элементы/не вернет все элементы? (Быстрая попытка с REPL предполагает, что да, это испортится)
Я мог неоднократно называть find, а затем удалять найденный элемент, пока я больше не нахожу, но это звучит неэффективно.
.filter вернет мне новый ListBuffer без элементов, но я хочу сделать это на месте.
Это
def --= (xs: TraversableOnce[A]) : ListBuffer.this.type
Removes all elements produced by an iterator from this list buffer.
выглядит многообещающим, но я не могу понять, как его использовать здесь.
Как мне это сделать?