2012-02-23 32 views
5

Tại sao chúng ta có điều này điều hành-methodBộ sưu tập cao cấp deprecation hoạt động (danh sách: Danh sách [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 

không dùng nữa trong danh sách, nhưng không phải cho bộ?

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

Nếu nó vì Danh sách không phù hợp cho hoạt động này về hiệu suất, nhưng chúng tôi vẫn có phương pháp dài nên tránh. Nhà khai thác bộ sưu tập sẽ trông như thế nào trong các phiên bản scala trong tương lai?

Trả lời

7

Vấn đề với phương pháp List là nó không bao giờ làm những gì bạn mong đợi. Ngây thơ, tôi mong chờ

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

và do đó

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

Trừ đó là không phải những gì bạn nhận được; thay vào đó bạn nhận được

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

(chính xác là những gì filterNot cung cấp và bạn nên mong đợi điều gì).

Vì các phần tử của Set là duy nhất nên không có sự phân biệt giữa hai phương pháp.

Các vấn đề liên quan