2012-02-23 7 views
5

Neden bu operatöre yöntemKoleksiyon üst düzey operasyon kullanımdan kaldırılması (liste: Liste [A] - 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 

listeler için kullanım dışı var, ama setleri için mi?

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

Eğer List, bu işlem için performans açısından çok uygun olmadığından, ancak yine de uzunluk yöntemine sahip olduğumuzdan kaçınmamız gerekir. Koleksiyon operatörleri, scala'nın gelecekteki sürümlerinde nasıl görünecek?

cevap

7

List yöntemiyle ilgili sorun, yapmasını beklemediğiniz şeyi yapmamasıdır. Safça, ben

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

ve Bunun dışında bu nedenle

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

değil ne olsun var beklenebilir; bunun yerine (filterNot verir tam olarak ne olduğu, ve beklediğiniz gereken)

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

olsun.

Set öğesinin öğeleri benzersiz olduğundan, iki yöntem arasında hiçbir ayrım yoktur.