Значения по умолчанию для булевых параметров
Часть раздела Введение в Luau путешествия по Lua на Coddy. Урок 28 из 80.
Есть один нюанс, который ты знаешь по Lua: or также заменяет false. Для параметра boolean?, значением по умолчанию которого должно быть true, выражение flag = flag or true превращает явно переданное false в true, потому что false or true — это true:
local function sendAlert(message: string, loud: boolean?)
loud = loud or true -- sendAlert("Hi", false) всё равно получает true
print(message, loud)
endВместо этого используй явную проверку на nil. Значение по умолчанию подставляется только в том случае, если аргумент не был передан:
local function sendAlert(message: string, loud: boolean?)
if loud == nil then
loud = true
end
print(message, loud)
end
sendAlert("Hi") -- Hi true
sendAlert("Hi", false) -- Hi falseДля строк и чисел or безопасен, поскольку только nil и false считаются ложными.
Задание
ЛегкоЗадай логическому параметру значение по умолчанию true, которое невозможно отменить значением false.
- Напиши
local function shippingCost(weight: number, insured: boolean?): number. - Начни функцию с
if insured == nil then insured = true end. - Возвращай
weight * 0.5 + 2, еслиinsuredравно true, иначе возвращайweight * 0.5. - Выведи
shippingCost(4)иshippingCost(4, false).
Нажми Run Code: вывод заканчивается значениями 4 и 2.
Попробуйте сами
-- Значение по умолчанию через идиому `or`
local function calculateTax(price: number, rate: number?): number
rate = rate or 0.05
return price * rate
end
print(calculateTax(100))
print(calculateTax(200, 0.08))
Все уроки раздела Введение в Luau
1Начало работы с Luau
Что такое Luau?Почему именно Luau?Ваш первый код на LuauПроверка типов и режимы ошибокИтоги: Введение в Luau4Работа с функциями
Типизация параметров и возвращаемых значенийТипизация анонимных функцийФункции без возвращаемого значенияНеобязательные параметрыЗначения параметров по умолчаниюЗначения по умолчанию для булевых параметровФункции с переменным числом аргументовОпределение типов функцийПовторение: типизированные функции2Основные типы
Число, строка и булево значениеТип 'any': запасной выходТип 'unknown'Nil и опциональные типыВывод типов на практикеЯвные аннотации типовПовторение: практика с основными типами5Псевдонимы, объединения и пересечения
Псевдонимы типов для примитивовТипы объединения (Union)Работа с типами объединенияЛитеральные типыТипы пересечения (Intersection)Комбинирование псевдонимов типовИтоги: Сложные комбинации типов3Типизированные таблицы: массивы и отображения
Типизированные массивыДобавление и чтение элементовЧто такое тип отображения?Объявление и доступ к отображениямПеребор таблицТаблицы смешанной структурыЧтение сеткиСоздание сеткиtable.unpackПовторение: массивы и отображенияПотренируйтесь самостоятельно: Онлайн-компилятор Luau