У меня есть неизменный набор класса Set [MyClass], и я хочу использовать методы Set, которые пересекаются и отличаются друг от друга, но Я хочу, чтобы они проверяли равенство, используя мой собственный метод равенства, а не тест на равенство объектов по умолчанию
. Я попытался переопределить оператор ==, но он не используется.
Заранее спасибо.
Редактировать:
Метод пересечения является членом конкретного значения GenSetLike
spec: http://www.scala-lang.org/api/current/scala/collection/GenSetLike.html src: https://lampsvn.epfl.ch/trac/scala/browser/scala/tags/R_2_9_1_final/src//library/scala/collection/GenSetLike.scala#L1
def intersect(that: GenSet[A]): Repr = this filter that
, поэтому пересечение выполняется с помощью метода фильтрации.
Еще один фильтр Edit:
определен в спецификации TraversableLike
: http://www.scala-lang.org/api/current/scala/collection/TraversableLike.html
def filter(p: A => Boolean): Repr = {
val b = newBuilder
for (x <- this)
if (p(x)) b += x
b.result
}
Мне непонятно, что это использует при вызове без предиката, p. Это не неявный параметр.