Функции, ничего не возвращающие
Часть раздела Введение в Luau путешествия по Lua на Coddy — урок 24 из 73.
Многие функции не вычисляют значение — они что-то делают: выводят сообщение, обновляют таблицу, сохраняют состояние. В Luau вы можете указать аннотацию, что функция возвращает nothing, с помощью пустого типа возвращаемого значения ():
function logMessage(message: string): ()
print(message)
end
local counter = 0
function incrementCounter(): ()
counter += 1
endЕсли вы знакомы с TypeScript, () играет роль void — но в Luau это запись в виде пары пустых круглых скобок, буквально «ноль возвращаемых значений».
Аннотация является необязательной: можете пропустить её, и Luau выведет, что функция возвращает nothing. Явное написание : () документирует ваши намерения — любой, кто читает сигнатуру, понимает, что эта функция вызывается ради её побочных эффектов (side effects), а не ради результата.
Во время выполнения ничего не меняется (как обычно): функция без значения 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-словари