能否通过模式匹配来检测某个东西是否是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
这样的东西的超类型,它是一个类型类(typeclass)。我也不能像def equals[N: Numeric](o: N)
那样做,因为o
必须是Any
才能符合equals
的约定。
那么,如果我不想列出每个已知的Numeric
类(包括用户定义的类,我甚至可能不知道它们),我该怎么办?