Если точность Double
достаточна, попробуйте
def mean[T](data: Seq[T])(implicit number: Numeric[T]): Double = {
import number._
val sum = data.foldLeft(zero)(plus)
toDouble(sum) / data.size
}
mean(Seq(1,2,3,4)) // 2.5
или используйте Fractional
(но это не будет работать для Ints
)
def mean[T](data: Seq[T])(implicit number: Fractional[T]): T = {
import number._
val sum = data.foldLeft(zero)(plus)
div(sum, fromInt(data.size))
}
mean(Seq(1.0,2,3,4)) // 2.5
mean(Seq(1,2,3,4)) // error: could not find implicit value for parameter number: Fractional[Int]