Типы данных: число, строка, логическое значение и nil
Различать типы, проверять их в коде и понимать, откуда берётся nil.
Теория
В Luau немного базовых типов: number — число, string — строка, boolean — правда или ложь, nil — «ничего нет», table — таблица, function — функция. Ещё есть типы самой платформы: Instance, Vector3, CFrame, Color3 и другие.
Тип узнаётся функцией typeof. В Roblox она честнее обычной type: для Vector3 обычная type скажет просто userdata, а typeof — Vector3.
nil — не ноль и не пустая строка. Это отсутствие значения: переменная объявлена, но пуста, или объект не найден. Обращение к полю у nil — самая частая ошибка в Output.
- В условии ложны только false и nil — ноль и пустая строка истинны
- tonumber("42") превращает строку в число, tostring(42) — наоборот
- Luau умеет аннотации: local coins: number = 0 — это подсказка редактору и себе
- Проверяй значение до использования: if part then …
Пример
Скрипт печатает тип нескольких значений и показывает, что nil ведёт себя иначе.
local coins: number = 100local nickname: string = "Аня"local isReady: boolean = truelocal missing = workspace:FindFirstChild("НетТакойДетали")print(typeof(coins), typeof(nickname), typeof(isReady), typeof(missing))if missing thenprint("нашлась")elseprint("детали нет — значение nil")end
Задача
Есть строка "25" и число 7. Преврати строку в число, сложи их и выведи результат вместе с типом получившегося значения.
- tonumber вернёт nil, если строку не удалось разобрать — это стоит проверить
Показать решение
local text = "25"local number = 7local parsed = tonumber(text)if parsed thenlocal total = parsed + numberprint(total, typeof(total))elsewarn("Это не число")end
Проверь себя
Что вернёт typeof(nil)?
Показать ответ
nil — полноценный тип, и typeof возвращает строку "nil".
Какое значение в условии считается ложным?
Показать ответ
В Luau ложны только false и nil. Ноль и пустая строка истинны.