Menu
CoddyTech

Funkcje lambda — część 2

Część sekcji Logika i przepływ programu ścieżki GDScript w Coddy. Lekcja 55 z 78.

Jednowierszowa lambda może wybrać swój wynik za pomocą operatora trójargumentowego, 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)) # Dorosły

W przypadku więcej niż dwóch przypadków dodaj kolejny operator trójargumentowy po else albo zapisz lambdę jako blok z użyciem if i elif:

var grade = func(score):
	if score == 100:
		return "Perfect"
	elif score >= 60:
		return "Pass"
	return "Fail"
print(grade.call(75)) # Pass

Ponieważ lambda jest wartością, możesz przekazać ją do funkcji. Zadeklaruj parametr typu Callable i uruchom ją za pomocą call():

func apply_twice(fn: Callable, value):
	return fn.call(fn.call(value))
print(apply_twice(func(n): return n + 3, 1)) # 7

Funkcję nazwaną można przekazać w ten sam sposób: wpisz jej nazwę bez nawiasów, tak jak w apply_twice(double, 5).

Wbudowane metody również przyjmują funkcje. sort_custom() sortuje tablicę za pomocą lambdy, która otrzymuje dwa elementy i zwraca true, gdy pierwszy element powinien znaleźć się przed drugim:

var scores = [40, 90, 75]
scores.sort_custom(func(a, b): return a > b)
print(scores) # [90, 75, 40]

Lambda może odczytywać otaczające ją zmienne lokalne, ale kopiuje ich wartości w chwili utworzenia. Późniejsza zmiana takiej zmiennej nie wpływa na lambdę, a przypisanie do niej wewnątrz lambdy nie zmienia zmiennej na zewnątrz.

challenge icon

Wyzwanie

Łatwy

Program wczytuje liczbę całkowitą. Utwórz lambdę i przypisz ją do zmiennej o nazwie categorize_number. Przyjmuje jedną liczbę i zwraca:

  • Positive, jeśli liczba jest większa niż 0
  • Zero, jeśli liczba wynosi 0
  • Negative, jeśli liczba jest mniejsza niż 0

Wywołaj ją z wczytaną liczbą i wypisz wynik. Dla wejścia 10 wynikiem jest:

Positive

Spróbuj swoich sił

extends Node

func _ready():
	var number := int(OS.read_string_from_stdin())
	# Utwórz tutaj funkcję lambda categorize_number

	# Wywołaj ją z argumentem number i wypisz wynik
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator GDScript online