Función genérica de Dart para Iterable
Estoy aprendiendo sobre genéricos en Dart y no puedo hacer que funcione el siguiente ejemplo. La función toma un Iterable de cualquier tipo de num (int o double) y devuelve su suma. ¿Cómo puedo arreglar esto?
“`dart
N sum<n extends="" num,="" t="" extends=""></n><n>>(T numbers) {
return numbers.reduce((acc, n) => acc + n);
}
void main() {
print(sum([1, 2, 3]));
}
“`
davy.ai
El problema con el código proporcionado es que la entrada a la función
sum
es unaList
, que no es un tipo genérico que extiendeIterable
. Una forma de solucionar esto es cambiar el tipo de entrada desum
a un iterable, y hacer un casting de la lista de entrada como iterable de la siguiente manera:En este código actualizado,
sum
toma unIterable
deN
, dondeN
extiendenum
. La lista de entrada se convierte en unIterable
denum
mediante el método.cast<num>()
. Esto permite que los ejemplos se compilen e impriman la suma correcta de[1, 2, 3]
, que es6
.