Сбор устаревших операций высокого уровня (список: список [A] - a: A) - PullRequest
5 голосов
/ 23 февраля 2012

Почему у нас этот оператор-метод

      @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

Если это потому, что List не очень подходит для этой операциисроки выполнения, но у нас все еще есть метод длины, который мы должны избегать.Как будут выглядеть операторы сбора в будущих версиях scala?

1 Ответ

7 голосов
/ 23 февраля 2012

Проблема метода 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 уникальны, нет различиядва метода.

...