2012-02-23 45 views
5

爲什麼我們有這個運營​​商的方法收集高級的操作折舊(名單:名單[A] - 一個:A)

 @deprecated("use `filterNot (_ == x)` instead", "2.8.0") 
    def - [B >: A](x: B): List[B] 
//i.e. List(1,23,3,4,5) - 23 

棄用名單,但不適用於套?

Set(1,23,3,4) - 23 

如果因爲名單是不是很適合在性能方面這種操作,但我們仍然要避免長法。 集合運算符在未來版本的scala中的樣子如何?

回答

7

List方法的問題在於它從來沒有做過你期望它做的事情。天真,我希望

1,2,3,1,2,3 - 1,2,3,1 == 2,3 

,因此

1,2,3,1,2,3 - 1 == 2,3,1,2,3 

除了這不是你所得到的;而不是你

1,2,3,1,2,3 - 1 == 2,3,2,3 

(這正是filterNot給人,以及你應該期望)。

由於Set的元素是唯一的,所以兩種方法之間沒有區別。

相關問題