Je n'aime pas utiliser un tableau indexé pour aucune raison autre que je trouve ça moche. Y a-t-il un moyen propre de faire la somme avec une fonction anonyme ? Est-il possible de le faire sans utiliser de variables extérieures ?
Réponses
Trop de publicités?Les itérables Dart disposent désormais d'une fonction de réduction (https://code.google.com/p/dart/issues/detail?id=1649), vous pouvez donc faire une somme de manière concise sans définir votre propre fonction de pliage :
var somme = [1, 2, 3].reduce((a, b) => a + b);
C'est une question très ancienne mais
En 2022, il existe en fait un package intégré.
Il suffit d'importer
import 'package:collection/collection.dart';
et d'appeler la méthode d'extension .sum
sur l'Iterable
.
EXEMPLE COMPLET
import 'package:collection/collection.dart';
void main() {
final list = [1, 2, 3, 4];
final sum = list.sum;
print(sum); // affiche 10
}
Si la liste est vide, .sum
renvoie 0
.
Vous pourriez également être intéressé par list.average
...
Il n'y a pas de moyen propre de le faire en utilisant les bibliothèques de base telles qu'elles sont maintenant, mais si vous créez votre propre foldLeft, alors il y en a
main() {
var sum = foldLeft([1,2,3], 0, (val, entry) => val + entry);
print(sum);
}
Dynamic foldLeft(Collection collection, Dynamic val, func) {
collection.forEach((entry) => val = func(val, entry));
return val;
}
J'ai parlé à l'équipe Dart de l'ajout de foldLeft aux collections de base et j'espère qu'il sera bientôt disponible.
- Réponses précédentes
- Plus de réponses