2011-06-21 15 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) 

Bunun neden kullanımdan kaldırıldığını anlamıyorum. Değişmez olmak, remove'un yeni bir liste döndüreceği açık olmalıdır. scaladoc yılında yalnızca bulabilirsiniz:Scala: Filtreyi neden kaldırılmıyor?

kaldırılan özellikler: yerine kullanılması filterNot'

cevap

14

It yöntem remove tutarlı olmadığı için - bazı koleksiyonları için iletmenin için ise bir değişken yerinde çıkarılmasını yaptı koleksiyonlar yeni bir versiyon oluşturdu. Yerinde (toplu) modifikasyonlara sahip yöntemler sadece değiştirilebilir koleksiyonlar için mevcut olmalıdır.

İlgili konular