Функции, ничего не возвращающие
Часть раздела Введение в Luau путешествия по Lua на Coddy. Урок 24 из 73.
Многие function не вычисляют значение. Они делают что-то: выводят сообщение, обновляют таблицу, сохраняют состояние. В Luau можно указать, что function возвращает nothing, с помощью пустого типа возврата ():
function logMessage(message: string): ()
print(message)
end
local counter = 0
function incrementCounter(): ()
counter += 1
endЕсли вы знакомы с TypeScript, () играет роль void, но в Luau это записывается как пара пустых скобок, буквально «ноль возвращаемых значений».
Аннотация необязательна: не указывайте её, и Luau определит, что function возвращает nothing. Явная запись : () документирует ваше намерение: любой, кто читает сигнатуру, понимает, что эта function вызывается ради её побочных эффектов, а не ради результата.
Во время выполнения ничего не меняется (как обычно): function без значения return просто выдаёт nil, если попытаться сохранить её результат: так же, как в обычном Lua.
Задание
ЛегкоСоздайте функцию с именем displayWelcome, которая принимает userName: string и имеет явный тип возвращаемого значения (). Она должна вывести: "Welcome to our application, [userName]!"
Создайте функцию с именем logError, которая принимает errorMessage: string и имеет тип возвращаемого значения (). Она должна вывести: "ERROR: [errorMessage]"
Создайте функцию с именем processData, которая не принимает параметров и имеет тип возвращаемого значения (). Она должна вывести "Processing data...", а затем в следующей строке — "Data processing complete."
Вызовите их в следующем порядке:
displayWelcome("Alice")processData()logError("Invalid input detected")displayWelcome("Bob")
Попробуйте сами
-- Напишите код здесь
-- displayWelcome(userName: string): ()
-- logError(errorMessage: string): ()
-- processData(): ()
-- затем вызовите: displayWelcome("Alice"), processData(),
-- logError("Invalid input detected"), displayWelcome("Bob")
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Введение в Luau
1Начало работы с Luau
Что такое Luau?Почему именно Luau?Ваш первый код на LuauПроверка типов и режимы ошибокИтоги: Введение в Luau4Работа с функциями
Типизация параметров и возвращаемых значенийТипизация анонимных функцийФункции, ничего не возвращающиеНеобязательные параметрыЗначения параметров по умолчаниюФункции с переменным числом аргументовОпределение типов функцийИтоги: типизированные функции2Базовые типы
Основные типы: num, str, boolТип 'any': лазейка в типизацииТип 'unknown'Nil и опциональные типыВывод типов на практикеЯвные аннотации типовИтоги: практика по базовым типам5Псевдонимы, объединения и пересечения
Псевдонимы типов для примитивовТипы объединения (Union)Работа с типами объединенияЛитеральные типыТипы пересечения (Intersection)Комбинирование псевдонимов типовИтоги: Сложные комбинации типов3Типизированные таблицы: Массивы и Map-словари
Типизированные массивыДобавление и чтение элементовЧто такое тип Map?Объявление и доступ к Map-словарямИтерация по таблицамТаблицы смешанной формыМногомерные типизированные массивыtable.unpack и VarargsИтоги: Массивы и Map-словариПотренируйтесь самостоятельно: Онлайн-компилятор Lua