Lambda-Funktionen Teil 2
Teil des Abschnitts Logik & Ablaufsteuerung der GDScript-Journey von Coddy. Lektion 55 von 78.
Eine einzeilige Lambda-Funktion kann ihr Ergebnis mit dem ternären Operator auswählen: value_if_true if condition else value_if_false:
var check_age = func(age): return "Adult" if age >= 18 else "Minor"
print(check_age.call(20)) # AdultFür mehr als zwei Fälle kannst du nach else einen zweiten ternären Ausdruck anfügen oder das Lambda als Block mit if und elif schreiben:
var grade = func(score):
if score == 100:
return "Perfect"
elif score >= 60:
return "Pass"
return "Fail"
print(grade.call(75)) # PassDa eine Lambda-Funktion ein Wert ist, kannst du sie an eine Funktion übergeben. Deklariere den Parameter mit dem Typ Callable und führe sie mit call() aus:
func apply_twice(fn: Callable, value):
return fn.call(fn.call(value))print(apply_twice(func(n): return n + 3, 1)) # 7Eine benannte Funktion kann auf dieselbe Weise übergeben werden: Schreibe ihren Namen ohne Klammern, wie in apply_twice(double, 5).
Auch integrierte Methoden nehmen Funktionen entgegen. sort_custom() sortiert ein Array mithilfe eines Lambdas, das zwei Elemente erhält und true zurückgibt, wenn das erste Element zuerst kommen muss:
var scores = [40, 90, 75]
scores.sort_custom(func(a, b): return a > b)
print(scores) # [90, 75, 40]Eine Lambda-Funktion kann die lokalen Variablen in ihrem Umfeld lesen, kopiert jedoch deren Werte bei ihrer Erstellung. Wenn du eine solche Variable danach änderst, wirkt sich das nicht auf die Lambda-Funktion aus, und wenn du ihr innerhalb der Lambda-Funktion einen Wert zuweist, ändert sich die Variable außerhalb davon nicht.
Aufgabe
EinfachDas Programm liest eine ganze Zahl ein. Erstelle eine Lambda-Funktion und speichere sie in einer Variablen namens categorize_number. Sie nimmt eine Zahl entgegen und gibt Folgendes zurück:
Positive, wenn die Zahl größer als0istZero, wenn die Zahl0istNegative, wenn die Zahl kleiner als0ist
Rufe sie mit der eingelesenen Zahl auf und gib das Ergebnis aus. Für die Eingabe 10 lautet die Ausgabe:
PositiveProbier es selbst
extends Node
func _ready():
var number := int(OS.read_string_from_stdin())
# Erstelle hier die Lambda-Funktion categorize_number
# Rufe sie mit number auf und gib das Ergebnis aus
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ügen3Mehrdimensionale 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