Урок 2 из 15

Типы данных: число, строка, логическое значение и 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 ведёт себя иначе.

ServerScriptService/Types.lua
  1. local coins: number = 100
  2. local nickname: string = "Аня"
  3. local isReady: boolean = true
  4. local missing = workspace:FindFirstChild("НетТакойДетали")
  5.  
  6. print(typeof(coins), typeof(nickname), typeof(isReady), typeof(missing))
  7.  
  8. if missing then
  9. print("нашлась")
  10. else
  11. print("детали нет — значение nil")
  12. end

Задача

Есть строка "25" и число 7. Преврати строку в число, сложи их и выведи результат вместе с типом получившегося значения.

  • tonumber вернёт nil, если строку не удалось разобрать — это стоит проверить
Показать решение
ServerScriptService/Solution.lua
  1. local text = "25"
  2. local number = 7
  3.  
  4. local parsed = tonumber(text)
  5.  
  6. if parsed then
  7. local total = parsed + number
  8. print(total, typeof(total))
  9. else
  10. warn("Это не число")
  11. end

Проверь себя

Что вернёт typeof(nil)?

Показать ответ

nil — полноценный тип, и typeof возвращает строку "nil".

Какое значение в условии считается ложным?

Показать ответ

В Luau ложны только false и nil. Ноль и пустая строка истинны.