Лямбда-функции. Часть 1
Часть раздела Логика и потоки выполнения путешествия по GDScript на Coddy. Урок 54 из 78.
lambda — это функция без имени, записанная как значение. Её можно сохранить в переменной, как число или строку:
var add = func(a, b): return a + bОна начинается с func, параметров и двоеточия, как любая функция, но у неё нет имени. Тело из одного оператора может оставаться на той же строке.
Чтобы запустить лямбда-функцию, сохранённую в переменной, вызови её метод call() с аргументами:
print(add.call(5, 3))8add(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 для «того, что можно вызвать».
Задание
ЛегкоПрограмма считывает три целых числа: a, b и c.
- Создай лямбда-функцию с тремя параметрами:
x,yиz, которая возвращает их произведение, и сохрани её в переменной с именемmultiply. - Вызови её с
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 и выведите результат
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и потоки выполнения
1Строки: углублённое изучение
Методы строкПоиск в строкахЗамена и обрезка пробеловРазделение и объединениеПовторение — проверка имени пользователя4Словари. Часть 2
Вложенные словариМассивы словарейОбъединение словарейКопирование словарейПовторение — подсчёт частоты10Продвинутые функции
Возврат нескольких значенийЛямбда-функции. Часть 1Лямбда-функции. Часть 2Повторение — сортировка с помощью лямбда-функцииРекурсивные функции. Часть 1Рекурсивные функции. Часть 2Повторение — сумма вложенного массива13Система управления запасами
Обзор проектаДобавление товара2Продвинутое управление ветвлением
Сопоставление с переменнымиУсловия в шаблонахШаблоны массивовШаблоны словарейПроверка принадлежностиИтоги — парсер команд5Приложение «Телефонная книга»
Показать менюДобавить контакт8Менеджер успеваемости студентов
Обзор проектаДобавить студента3Многомерные массивы
Основы двумерных массивовДоступ к элементам двумерного массиваВложенные циклы с двумерными массивамиПовторение: двумерные массивыРваные массивыТипичные шаблоны работы с двумерными массивамиПовторение: игровое поле6Множества и словари
Что такое множество?Словарь как множествоДобавление и удалениеОбъединение и пересечениеРазность множествПовторение — удаление дубликатовПотренируйтесь самостоятельно: Онлайн-компилятор GDScript