2011-06-21 11 views
6
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) 

Nie rozumiem, dlaczego jest to przestarzałe. Będąc niezmiennym, powinno być jasne, że remove zwróci nową listę. W scaladoc można znaleźć tylko:Scala: dlaczego usuwanie jest przestarzałe na rzecz filterNot?

Przestarzałe: Redakcyjne filterNot”zamiast

Odpowiedz

14

To dlatego metoda remove nie była spójna - dla niektórych kolekcjach to zrobił zmienny usunięcie w miejscu, podczas gdy dla niezmienny Kolekcje stworzyły nową wersję. Metody z modyfikacjami na miejscu (zbiorcze) powinny być dostępne tylko dla kolekcji zmiennych.

Powiązane problemy