Menu
CoddyTech

Лямбда-функции. Часть 1

Часть раздела Логика и потоки выполнения путешествия по GDScript на Coddy. Урок 54 из 78.

lambda — это функция без имени, записанная как значение. Её можно сохранить в переменной, как число или строку:

var add = func(a, b): return a + b

Она начинается с func, параметров и двоеточия, как любая функция, но у неё нет имени. Тело из одного оператора может оставаться на той же строке.

Чтобы запустить лямбда-функцию, сохранённую в переменной, вызови её метод call() с аргументами:

print(add.call(5, 3))
8

add(5, 3) не работает: GDScript ищет в скрипте функцию с именем add и сообщает Function "add()" not found до запуска программы.

Более длинная лямбда содержит блок с отступом. Как и любой функции, ей нужен return, чтобы вернуть значение:

var greet = func(player_name):
	var message = "Hello, " + player_name
	return message + "!"
print(greet.call("Ana"))
Hello, Ana!

Лямбда без return возвращает null, поэтому func(n): n * 2 вычисляет значение и отбрасывает его.

Параметры и результат могут иметь типы: func(n: int) -> int: return n * 2. Значение лямбда-функции имеет тип Callable — тип GDScript для «того, что можно вызвать».

challenge icon

Задание

Легко

Программа считывает три целых числа: a, b и c.

  1. Создай лямбда-функцию с тремя параметрами: x, y и z, которая возвращает их произведение, и сохрани её в переменной с именем multiply.
  2. Вызови её с a, b и c и выведи результат.

Для входных данных 2, 3 и 4 результат будет:

24

Попробуйте сами

extends Node

func _ready():
	var a := int(OS.read_string_from_stdin())
	var b := int(OS.read_string_from_stdin())
	var c := int(OS.read_string_from_stdin())
	# Создайте здесь лямбда-функцию multiply

	# Вызовите multiply с аргументами a, b и c и выведите результат
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и потоки выполнения

Потренируйтесь самостоятельно: Онлайн-компилятор GDScript