Menu
CoddyTech

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)
10

Elle 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 :

  • acc commence à 0
  • 0 + 1 vaut 1, 1 + 2 vaut 3, 3 + 3 vaut 6, 6 + 4 vaut 10
  • 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) # 9

Sur 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], "")) # go
challenge icon

Défi

Facile

Le 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 :

  1. la somme des nombres
  2. leur produit
  3. 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
8

Essayez 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()
quiz iconTestez-vous

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

Entraînez-vous par vous-même : Compilateur GDScript en ligne