La méthode reduce
Fait partie de la section Logique et flux d’exécution du Journey GDScript de Coddy. Leçon 62 sur 78.
reduce() combine tous les éléments d’un tableau en une seule valeur : une somme, un produit, l’élément le plus grand, une phrase.
var numbers = [1, 2, 3, 4]
var total = numbers.reduce(func(acc, n): return acc + n, 0)
print(total)10Elle prend deux arguments : une fonction et une valeur de départ, ici 0. La fonction reçoit le résultat obtenu jusqu’ici, appelé l’accumulateur (acc), ainsi que l’élément suivant. La valeur qu’elle renvoie devient le nouvel accumulateur :
acccommence à00 + 1vaut1,1 + 2vaut3,3 + 3vaut6,6 + 4vaut10- après le dernier élément,
reduce()renvoie l’accumulateur :10
Pour un produit, commence à 1 : numbers.reduce(func(acc, n): return acc * n, 1) vaut 24.
Sans valeur de départ, le premier élément sert de point de départ et la fonction s’exécute à partir du deuxième élément. Cela convient pour trouver l’élément le plus grand :
var biggest = [4, 9, 2].reduce(func(a, b): return a if a > b else b)
print(biggest) # 9Sur un tableau vide sans valeur de départ, reduce() renvoie null ; indique donc une valeur de départ si le tableau peut être vide.
L’accumulateur peut être de n’importe quel type. Avec une valeur de départ de "", cela construit une chaîne à partir des premières lettres :
var words = ["game", "over"]
print(words.reduce(func(acc, w): return acc + w[0], "")) # goDéfi
FacileLe programme lit une ligne de nombres entiers séparés par des virgules et les stocke dans le tableau numbers. Cette partie est déjà écrite.
En utilisant reduce() pour chacun d’eux, affiche trois lignes :
- la somme des nombres
- leur produit
- le plus grand nombre (écris la comparaison dans la lambda ; n’appelle pas
max())
Il y a toujours au moins un nombre. Pour l’entrée 3,7,2,8,4, la sortie est :
24
1344
8Essayez vous-même
extends Node
func _ready():
var numbers := []
for part in OS.read_string_from_stdin().split(","):
numbers.append(int(part))
# Affiche la somme, le produit et le plus grand nombre, chacun avec reduce()
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logique et flux d’exécution
1Les chaînes de caractères en profondeur
Méthodes des chaînesRechercher dans les chaînesRemplacer et supprimer les espacesDécouper et joindreRécapitulatif - Vérifier un nom d’utilisateur4Dictionnaires, partie 2
Dictionnaires imbriquésTableaux de dictionnairesFusionner des dictionnairesCopier des dictionnairesRécapitulatif - Compteur de fréquence7Énumérations
Qu’est-ce qu’une énumération ?Définir une énumérationValeurs d’une énumérationÉnumérations avec matchRécapitulatif - Feu de circulation10Fonctions avancées
Renvoyer plusieurs valeursFonctions lambda, partie 1Fonctions lambda, partie 2Récapitulatif - Tri avec lambdaFonctions récursives, partie 1Fonctions récursives, partie 2Récapitulatif - Somme d’un tableau imbriqué13Système de gestion des stocks
Présentation du projetAjouter un article2Prise de décision avancée
Correspondance avec des variablesGardes de correspondanceMotifs de tableauMotifs de dictionnaireVérifications d’appartenanceRécapitulatif – Analyseur de commandes5Application de carnet d’adresses
Afficher le menuAjouter un contact8Gestionnaire des dossiers étudiants
Aperçu du projetAjouter un étudiant11Fonctions d’ordre supérieur
La méthode mapLa méthode filterLa méthode reduceany et allRécapitulatif - Validateur d’e-mailsRécapitulatif - Traitement de nombres3Tableaux multidimensionnels
Bases des tableaux 2DAccéder aux éléments d’un tableau 2DBoucles imbriquées avec des tableaux 2DRécapitulatif - Tableaux 2DTableaux irréguliersMotifs courants des tableaux 2DRécapitulatif - Plateau de jeu6Les ensembles avec les dictionnaires
Qu’est-ce qu’un ensemble ?Un dictionnaire comme ensembleAjouter et supprimerUnion et intersectionDifférence d’ensemblesRécapitulatif – Supprimer les doublons9Agrégation avancée de données
Additionner des valeursTrouver le minimum et le maximumTri personnaliséRécapitulatif - Trieur de dictionnairesEntraînez-vous par vous-même : Compilateur GDScript en ligne