我有代码看起来像这样:如何编写Scala中的类型类?
/**
* A divisor that operates on real numbers.
*/
case class RealDivisor(divisor: Long)
extends Divisor[Double, Double]
with Divisor[Long, Double] // ... with Divisor[Int, Double], etc.
{
override def divide(dividend: Double): Double =
if (divisor != 0) dividend/divisor.toDouble else 0
def divide(dividend: Long): Double = divide(dividend.toDouble)
}
我宁愿能够做这样的事情:
case class RealDivisor(divisor: Long) extends Divisor[A: Numeric] {
// ...
}
因此我只需要一次实现divide
方法。我会如何做这样的事情?
'数字'不会有太大的帮助,因为它没有实现分割。但是,如果您按照“Numeric”作为指南,您会发现许多这些实例不是免费的。你真的在找什么?是否可以通过其他数字类型来划分“Long”,还是将任何数字类型除以任何数字类型的能力? –
[这个问题](http://stackoverflow.com/questions/40351176/generic-numeric-division)可能是有益的。 – jwvh
@MichaelZajac我希望能够将类型转换为“Double”,以便我可以对其进行划分;这就是为什么我使用'Numeric'。 –