Se si dispone di codice come 5 * 5.0
, il risultato viene convertito nel tipo più preciso, Double
.Come rendere il codice usando Valore [T: Numerico] più "flessibile" come le controparti "non in scatola"?
Ma questo non sembra funzionare con il codice come
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)
Esiste un modo per fare le cose come someIntValue + double
lavoro, dove è someIntValue
Value[Int]
e double
è Double
?
PS: Ci scusiamo per il titolo tutt'altro che perfetto. Sono grato per i suggerimenti per una migliore formulazione ...
C'è anche http://stackoverflow.com/questions/3088979/how-to-set-up-implicit-conversion-to-allow-arithmetic-between-numeric-types che potrebbe essere utile. –