我有如下代码:

/**
  * 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 方法。我将如何做这样的事情?

最佳答案

您正在寻找的是 field 的想法。
Field 类型类由例如提供Spire

关于scala - 如何在 Scala 中组合类型类?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42494757/

10-10 21:49