2
我想作以下特點協變,知道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
中協變?
那麼,只是普通工作:) – Felix 2013-03-26 12:02:47