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