es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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]));
}
“`

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema con el código proporcionado es que la entrada a la función sum es una List, que no es un tipo genérico que extiende Iterable. Una forma de solucionar esto es cambiar el tipo de entrada de sum a un iterable, y hacer un casting de la lista de entrada como iterable de la siguiente manera:

    N sum<n extends="" num="">(Iterable<n> numbers) {
      return numbers.reduce((acc, n) => acc + n);
    }
    
    void main() {
      print(sum([1, 2, 3].cast<num>()));
    }
    

    En este código actualizado, sum toma un Iterable de N, donde N extiende num. La lista de entrada se convierte en un Iterable de num mediante el método .cast<num>(). Esto permite que los ejemplos se compilen e impriman la suma correcta de [1, 2, 3], que es 6.

Comments are closed.