Значения параметров по умолчанию
Часть раздела Введение в Luau путешествия по Lua на Coddy. Урок 27 из 80.
Необязательные параметры оставляют вам nil, с которым нужно работать. Часто вам на самом деле нужно резервное значение: «если вызывающий код ничего не указал, предположить X». В Luau нет синтаксиса значения по умолчанию в сигнатуре (нет greeting: string = "Hello"); вместо этого используется классический идиоматичный приём Lua, теперь с типами:
function greet(name: string, greeting: string?): string
greeting = greeting or "Hello"
return `{greeting}, {name}`
end
print(greet("Alice")) -- Привет, Алиса
print(greet("Alice", "Howdy")) -- Здорово, АлисаПараметр помечен как необязательный (string?), а первая строка тела функции заменяет nil значением по умолчанию. Это работает, потому что nil — ложное значение: nil or "Hello" вычисляется как "Hello". После этой строки проверяющая система знает, что greeting больше не может быть nil.
Задание
ЛегкоЗадайте необязательному параметру значение по умолчанию.
- Напишите
local function calculateTax(price: number, rate: number?): number. - Его первая строка —
rate = rate or 0.05; затем вернитеprice * rate. - Выведите
calculateTax(100)иcalculateTax(200, 0.08).
Нажмите Run Code: вывод покажет 5, затем 16.
Попробуйте сами
-- 1) calculateTax(price: number, rate: number?): number
-- значение rate по умолчанию — 0.05; используйте приём с `or`
-- 2) выведите calculateTax(100) и calculateTax(200, 0.08)
Все уроки раздела Введение в Luau
1Начало работы с Luau
Что такое Luau?Почему именно Luau?Ваш первый код на LuauПроверка типов и режимы ошибокИтоги: Введение в Luau4Работа с функциями
Типизация параметров и возвращаемых значенийТипизация анонимных функцийФункции без возвращаемого значенияНеобязательные параметрыЗначения параметров по умолчаниюЗначения по умолчанию для булевых параметровФункции с переменным числом аргументовОпределение типов функцийПовторение: типизированные функции2Основные типы
Число, строка и булево значениеТип 'any': запасной выходТип 'unknown'Nil и опциональные типыВывод типов на практикеЯвные аннотации типовПовторение: практика с основными типами5Псевдонимы, объединения и пересечения
Псевдонимы типов для примитивовТипы объединения (Union)Работа с типами объединенияЛитеральные типыТипы пересечения (Intersection)Комбинирование псевдонимов типовИтоги: Сложные комбинации типов3Типизированные таблицы: массивы и отображения
Типизированные массивыДобавление и чтение элементовЧто такое тип отображения?Объявление и доступ к отображениямПеребор таблицТаблицы смешанной структурыЧтение сеткиСоздание сеткиtable.unpackПовторение: массивы и отображенияПотренируйтесь самостоятельно: Онлайн-компилятор Luau