Scala: почему удаление не рекомендуется в пользу filterNot? - PullRequest
6 голосов
/ 21 июня 2011
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 'вместо

1 Ответ

14 голосов
/ 21 июня 2011

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

...