Menu
CoddyTech

Необязательные параметры

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

В обычном Lua аргументы всегда можно было пропустить: отсутствующие аргументы незаметно становились nil, и забыть обработать этот случай было классическим источником ошибок. В Luau эта возможность обозначается явно: добавьте ? к типу параметра, чтобы пометить его как необязательный.

function greet(name: string, title: string?): string
    if title then
        return `{title} {name}`
    end
    return `Hello, {name}`
end

print(greet("Ada"))          -- Привет, Ада
print(greet("Ada", "Dr."))   -- Д-р Ада

string? означает «string или nil». Вызывающий код может передать строку или полностью пропустить аргумент; параметры без ? обязательны, и проверка типов помечает вызовы, в которых они пропущены.

Внутри функции необязательный параметр может иметь значение nil, поэтому проверьте его перед использованием: if title then ... end — стандартный шаблон. Пропустите проверку и объедините nil со строкой — получите ту же ошибку времени выполнения, которую всегда выдавал Lua; проверка типов предупредит вас заранее.

challenge icon

Задание

Легко

Напиши функцию профиля, в которой отображаемое имя необязательно.

  1. Напиши local function createUserProfile(username: string, displayName: string?): string.
  2. Возвращай `Profile: {displayName} (@{username})`, если указано displayName, иначе возвращай `Profile: @{username}`.
  3. Выведи createUserProfile("john_doe", "John Doe") и createUserProfile("jane_smith").

Нажми Run Code: вывод покажет Profile: John Doe (@john_doe) и Profile: @jane_smith.

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

-- 1) createUserProfile(username: string, displayName: string?): string
-- 2) выведи результат с отображаемым именем и без него

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

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