Возможно ли сопоставление с образцом определить, является ли что-то 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
классов (, включая, я думаю, определяемые пользователем -классы, о которых я могу даже не знать )?