How to compose classes in Scala?

I have a code that looks like this:

/**
  * 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)

}

I would rather be able to do something like this:

case class RealDivisor(divisor: Long) extends Divisor[A: Numeric] {
  // ...
}

Thus, I will only need to implement the method once divide. How do I do something like this?

+4
source share
1 answer

What you are looking for is a field idea .

A Fieldtypeclass is provided, for example. The Spire .

0
source

Source: https://habr.com/ru/post/1670967/


All Articles