次の特性を共変にしたいのですが、それDistTraversableLike
は両方の型パラメーターで共変であることを知っています。
trait TraversableNumOps[T, Repr] extends DistTraversableLike[T, Repr] {
private def min(a: T, b: T)(implicit num: Numeric[T]) =
if (num.compare(a, b) <= 0) a else b
private def max(a: T, b: T)(implicit num: Numeric[T]) =
if (num.compare(a, b) > 0) a else b
def maxD(implicit num: Numeric[T]): Option[T] =
reduceD((a, b) => if (a >= b) a else b)
def minD(implicit num: Numeric[T]): Option[T] =
reduceD((a, b) => if (a < b) a else b)
def sumD(implicit num: Numeric[T]): Option[T] =
reduceD(_ + _)
def productD(implicit num: Numeric[T]): Option[T] =
reduceD(_ * _)
}
しかし、私はそれを壊さずにこれを管理することができませんでした。Numeric[T]
問題は、Tで共変ではないものをサポートしたいということです。
T
とで共変になるようにこの特性を変更するにはどうすればよいRepr
ですか?