Ho il seguente problema: Ho una funzione che accetta un parametro [Double] come parametro, esegue alcune operazioni aritmetiche sugli elementi della lista e restituisce il risultato . Vorrei che la funzione accettasse anche List [Int]. Ecco un esempio:scala per definire le funzioni accettando un elenco di diversi tipi numerici
def f(l: List[Double]) = {
var s = 0.0
for (i <- l)
s += i
s
}
val l1 = List(1.0, 2.0, 3.0)
val l2 = List(1, 2, 3)
println(f(l1))
println(f(l2))
Naturalmente la seconda println non riesce dal momento che f richiede Lista [Doppia] e non lista [Int].
Si noti inoltre la formulazione non scala dello stile della somma all'interno della funzione f per dimostrare la necessità di utilizzare 0 (o altre costanti) all'interno della funzione stessa (se sommi i valori Int devo iniziare a 0 non 0.0.
Qual è il modo migliore (meno codice) per ottenere il lavoro di funzione su entrambi doppio e Int?
(ho visto qualcosa di circa 2,8 tratto numerica di io non sono così sicuro come usarlo ...)
Grazie a tutti per l'aiuto
'def riassumere [T: Numeric] (l: Lista [T]) = l.sum' farà. –
@Thomas, sì, certo;) – Patrick