Scala: почему удаление устарело в пользу filterNot?

scala> List(1, 2, 3) remove (_ < 2)
<console>:8: warning: method remove in class List is deprecated: use `filterNot'
 instead
       List(1, 2, 3) remove (_ < 2)
                     ^
res0: List[Int] = List(2, 3)

Я не понимаю, почему это устарело. Будучи неизменным, должно быть ясно, что remove вернет новый список. В scaladoc вы можете найти только:

Устарело: вместо этого используйте filterNot.


person onof    schedule 21.06.2011    source источник


Ответы (1)


Это потому, что метод remove не был последовательным — для некоторых коллекций он выполнял изменяемое удаление на месте, тогда как для неизменяемых коллекций он создавал новую версию. Методы с изменениями на месте (массовыми) должны быть доступны только для изменяемых коллекций.

person axel22    schedule 21.06.2011