Возможно ли совпадение шаблона, если что-то есть Numeric
? Я хочу сделать следующее:
class DoubleWrapper(value: Double) {
override def equals(o: Any): Boolean = o match {
case o: Numeric => value == o.toDouble
case _ => false
}
override def hashCode(): Int = value ##
}
Но, конечно, это не работает, потому что Numeric
не является супертипом таких вещей, как Int
и Double
, это класс. Я также не могу сделать что-то вроде def equals[N: Numeric](o: N)
, потому что o
должен быть Any
, чтобы соответствовать контракту для equals
.
Итак, как мне это сделать без перечисления всех известных классов Numeric
(включая, я думаю, пользовательские классы, о которых я даже не знаю)?