Die reduce-Methode
Teil des Abschnitts Logik & Ablaufsteuerung der GDScript-Journey von Coddy. Lektion 62 von 78.
reduce() kombiniert alle Elemente eines Arrays zu einem Wert: einer Summe, einem Produkt, dem größten Element oder einem Satz.
var numbers = [1, 2, 3, 4]
var total = numbers.reduce(func(acc, n): return acc + n, 0)
print(total)10Es benötigt zwei Argumente: eine Funktion und einen Startwert, hier 0. Die Funktion erhält das bisherige Ergebnis, den sogenannten Akkumulator (acc), und das nächste Element. Ihr Rückgabewert wird zum neuen Akkumulator:
accbeginnt bei00 + 1ist1,1 + 2ist3,3 + 3ist6,6 + 4ist10- nach dem letzten Element gibt
reduce()den Akkumulator zurück:10
Für ein Produkt beginnst du bei 1: numbers.reduce(func(acc, n): return acc * n, 1) ist 24.
Ohne einen Startwert ist das erste Element der Startwert, und die Funktion wird ab dem zweiten Element ausgeführt. Das eignet sich für das größte Element:
var biggest = [4, 9, 2].reduce(func(a, b): return a if a > b else b)
print(biggest) # 9Bei einem leeren Array ohne Startwert gibt reduce() null zurück. Gib daher einen Startwert an, wenn das Array leer sein kann.
Der Akkumulator kann einen beliebigen Typ haben. Mit einem Startwert von "" wird daraus eine Zeichenkette aus den Anfangsbuchstaben erstellt:
var words = ["game", "over"]
print(words.reduce(func(acc, w): return acc + w[0], "")) # goAufgabe
EinfachDas Programm liest eine Zeile mit durch Kommas getrennten ganzen Zahlen ein und speichert sie im Array numbers. Dieser Teil ist bereits geschrieben.
Gib mithilfe von reduce() für jede dieser Berechnungen eine Zeile aus:
- die Summe der Zahlen
- ihr Produkt
- die größte Zahl (schreibe den Vergleich in die Lambda-Funktion; rufe nicht
max()auf)
Es gibt immer mindestens eine Zahl. Für die Eingabe 3,7,2,8,4 lautet die Ausgabe:
24
1344
8Probier es selbst
extends Node
func _ready():
var numbers := []
for part in OS.read_string_from_stdin().split(","):
numbers.append(int(part))
# Gib die Summe, das Produkt und die größte Zahl aus, jeweils mit reduce()
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablaufsteuerung
1Strings im Detail
String-MethodenIn Strings suchenErsetzen und TrimmenAufteilen und ZusammenfügenRückblick – Benutzernamen prüfen4Wörterbücher Teil 2
Verschachtelte WörterbücherArrays aus WörterbüchernWörterbücher zusammenführenWörterbücher kopierenWiederholung – Häufigkeitszähler10Fortgeschrittene Funktionen
Mehrere Werte zurückgebenLambda-Funktionen Teil 1Lambda-Funktionen Teil 2Wiederholung – Sortieren mit LambdaRekursive Funktionen Teil 1Rekursive Funktionen Teil 2Wiederholung – Verschachteltes Array summieren13Inventarverwaltungssystem
ProjektübersichtArtikel hinzufügen2Fortgeschrittene Entscheidungsfindung
Match mit VariablenMatch-GuardsArray-MusterDictionary-MusterMitgliedschaftsprüfungenRückblick – Befehlsparser5Kontaktbuch-Anwendung
Menü anzeigenKontakt hinzufügen8Schülerdatenverwaltung
ProjektübersichtSchüler hinzufügen11Funktionen höherer Ordnung
Die map-MethodeDie filter-MethodeDie reduce-Methodeany und allWiederholung – E-Mail-ValidatorWiederholung – Zahlenverarbeitung3Mehrdimensionale Arrays
Grundlagen zu 2D-ArraysAuf Elemente in 2D-Arrays zugreifenVerschachtelte Schleifen mit 2D-ArraysWiederholung – 2D-ArraysGezackte ArraysGängige Muster für 2D-ArraysWiederholung – Spielbrett6Mengen mit Dictionaries
Was ist eine Menge?Dictionary als MengeHinzufügen und EntfernenVereinigung und SchnittmengeMengendifferenzWiederholung – Duplikate entfernen9Fortgeschrittene Datenaggregation
Werte summierenMinimum und Maximum findenBenutzerdefiniertes SortierenRückblick – Wörterbuch-Sortierer12Einfache Fehlerbehandlung
Was ist Fehlerbehandlung?Eingaben validierenGuard ClausesFehlercodes zurückgebenRückblick – Sichere DivisionÜbe selbstständig: Online-GDScript-Compiler