Si tengo un código como 5 * 5.0
, el resultado se convierte al tipo más preciso, Double
.¿Cómo hacer código usando Value [T: Numeric] más "flexible" como las contrapartidas "unboxed"?
Pero esto no parece funcionar con un código como
case class Value[T : Numeric](value: T) {
type This = Value[T]
def +(m: This) = Value[T](implicitly[Numeric[T]].plus(value, m.value))
...
}
implicit def numToValue[T : Numeric](v: T) = Value[T](v)
¿Hay una manera de hacer las cosas como someIntValue + double
trabajo, donde es someIntValue
Value[Int]
y double
es Double
?
PD: Perdón por el título menos que perfecto. Estoy agradecido por las sugerencias para una mejor redacción ...
También hay http://stackoverflow.com/questions/3088979/how-to-set-up-implicit-conversion-to-allow-arithmetic-between-numeric-types que puede ser útil. –