Можно ли определить собственное понятие равенства или упорядочения для коллекций в Scala? Переопределение equals
и hashCode
не работает в этом случае, потому что я хотел бы иметь более одного экземпляра.Определить равенство/порядок неявно для коллекций
Вот примерно то, что я имел в виду: (игнорировать недействительность этого кода)
implicit val customEq1(x: Int, y: Int) = x % 8 == y % 8
val customEq2(x: Int, y: Int) = x.toString == y.toString.take(2)
val union = Set(1,15,3).union(Set(3,7,8)) // => Set(1,3,8)
Я предположил бы, что равенство/упорядоченность быть класс типов, но функции, как, например, diff
, union
, intersect
, похоже, не предлагают такой функциональности.
Возможного дубликат [ Как я могу определить пользовательскую операцию равенства, которая будет использоваться неизменяемыми методами сопоставления множеств] (http://stackoverflow.com/questions/7681183/how-can-i-define-a-custom-equality-operation-that-will -be-used-by-immutable-set) – DeadNight
Ответы на «повторяющийся» вопрос предполагают переопределение «равных», что не то, что я хотел, как объяснялось в моем вопросе. – TomTom