Я пытаюсь написать обобщенную среднюю функцию, которая работает с Iterable, которая содержит числовые типы. Он будет работать, скажем, на массивах, так:
val rand = new scala.util.Random()
val a = Array.fill(1000) { rand.nextInt(101) }
val b = Array.fill(1000) { rand.nextDouble }
println(mean(a))
println(mean(b))
и т.д., надеемся, что он сможет работать с другими итерами, такими как списки.
Я пробовал различные заклинания для среднего метода, безрезультатно:
def mean[T <% Numeric[T]](xs: Iterable[T]) = xs.sum.toDouble / xs.size
def mean[A](xs: Iterable[Numeric[A]]):Double = xs.sum.toDouble / xs.size
def mean[T](xs: Iterable[T])(implicit num: Numeric[T]):Double = xs.sum / xs.size
def mean(xs: Iterable[Double]) = xs.sum / xs.size
Каков правильный способ сделать это в Scala?