Menu
Coddy logo textTech

Типы объединения (Union)

Часть раздела Введение в Luau путешествия по Lua на Coddy. Урок 31 из 73.

Иногда одного типа недостаточно. ID пользователя может прийти как "user123" или как 42. В обычном Lua вам оставалось бы только надеяться на лучшее; Luau предоставляет вам типы объединения (union) — вертикальная черта | читается как «или»:

local userId: number | string

userId = "user123"  -- ✓ строка разрешена
userId = 42          -- ✓ число разрешено
userId = true        -- ✗ ошибка типа: boolean не входит в объединение

Переменная может содержать любой из элементов объединения — и только их. В этом ключевое отличие от any: объединение остается строгим в отношении того, что разрешено, предоставляя при этом необходимую гибкость.

Объединения особенно полезны для параметров функций, которые принимают несколько форматов входных данных:

function printId(id: number | string): ()
    print(id)
end

printId(42)          -- работает с числом
printId("user123")   -- работает со строкой

Вы уже знакомы с string? — это и было ваше первое объединение! Это просто сокращенная запись для string | nil. В следующем уроке вы узнаете, как безопасно работать со значением объединения, когда оно у вас есть.

challenge icon

Задание

Легко

Создайте функцию с именем printId, которая принимает id: number | string и выводит его — с явным типом возвращаемого значения ().

Объявите переменную status типа string | number, инициализированную значением "<code>active".

Затем по порядку:

  1. Вызовите printId(42)
  2. Вызовите printId("<code>user123")
  3. Выведите status
  4. Присвойте переменной status новое значение 200 и выведите её снова

Всего четыре строки вывода.

Попробуйте сами

-- Напишите код здесь
-- printId(id: number | string): ()
-- local status: string | number = точный текст из инструкций
-- вызовите printId(42), printId(точный текст из инструкций),
-- выведите status, присвойте 200, выведите снова
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Введение в Luau

Потренируйтесь самостоятельно: Онлайн-компилятор Lua