Menu
CoddyTech

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)) # Adult

Fü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)) # Pass

Da 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)) # 7

Eine 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.

challenge icon

Aufgabe

Einfach

Das 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 als 0 ist
  • Zero, wenn die Zahl 0 ist
  • Negative, wenn die Zahl kleiner als 0 ist

Rufe sie mit der eingelesenen Zahl auf und gib das Ergebnis aus. Für die Eingabe 10 lautet die Ausgabe:

Positive

Probier 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
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablaufsteuerung

Übe selbstständig: Online-GDScript-Compiler