我有代碼看起來像這樣:如何編寫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'。 –