Обобщения Scala и числовые значения

Мне нужно передать две функции в качестве параметров функции scala. Затем эта функция должна оценить их и получить от них число, с которым будет работать. Это число может быть типа Int, Double или любого другого числового типа. Хотелось бы, чтобы функция работала, с какими бы типами она ни работала.

Приведенный ниже пример объясняет проблему.

import Numeric.Implicits._

class Arithmetic[T : Numeric](val A: Connector[T], val B: Connector[T]) {
  val sum  = new Connector({ A.value + B.value })
}

class Constant[T](var x: T) {
  val value = new Connector({ x })
}

class Connector[T](f: => T) {
  def value: T = f
  override def toString = value.toString()
}

object Main extends App{
  val n1 = new Constant(1)

  // works
  val n5 = new Constant(5)
  val a = new Arithmetic( n1.value, n5.value )
  println(a.sum)

 // no works
 val n55 = new Constant(5.5)
 val b = new Arithmetic( n1.value, n55.value )
 println(b.sum)

}

Я также пробовал

class Arithmetic[T,R : Numeric](val A: Connector[T], val B: Connector[R]) {

и несколько других комбинаций, но в итоге получил

error: could not find implicit value for parameter num: scala.math.Numeric[Any]
val sum  = new Connector({ A.value + B.value })
8
задан AndreasScheinert 14 October 2011 в 10:43
поделиться