Menu
CoddyTech

Область видимости и блоки

Часть раздела Основы путешествия по Lua на Coddy. Урок 86 из 90.

В Lua можно создавать новые области видимости в любом месте кода с помощью блоков do...end. Эти блоки позволяют точно контролировать, где доступны локальные переменные, и дают возможность управлять областью видимости переменных.

Вот как можно создать новую область видимости с помощью блока do...end:

local outerVar = "I'm outside"

do
    local innerVar = "I'm inside"
    print(outerVar)  -- Это работает
    print(innerVar)  -- Это тоже работает
end

print(outerVar)  -- Это работает
print(innerVar)  -- Выводит nil: innerVar существует только внутри блока

Преимущество области видимости в том, что в разных блоках можно объявлять локальные переменные с одинаковым именем, и они остаются полностью независимыми:

local name = "Alice"

do
    local name = "Bob"  -- Другая переменная!
    print(name)  -- Выводит "Bob"
end

print(name)  -- Выводит "Alice"

Каждый блок do...end создаёт собственное изолированное окружение для локальных переменных. Переменные, объявленные внутри блока, не могут выйти за пределы внешней области видимости, а переменные из внешних областей видимости доступны из внутренних блоков.

challenge icon

Задание

Легко

Создай вложенные блоки do...end, чтобы показать, что локальные переменные с одинаковыми именами в разных областях видимости остаются полностью независимыми.

Сначала создай локальную переменную с именем playerLevel и значением 10 во внешней области видимости и выведи её.

Затем создай блок do...end и внутри него:

  • Объяви новую локальную переменную с именем playerLevel и значением 25
  • Выведи эту внутреннюю переменную playerLevel

После завершения внутреннего блока снова выведи внешнюю переменную playerLevel, чтобы показать, что она осталась неизменной.

Это показывает, что локальные переменные с одинаковыми именами в разных областях видимости полностью независимы: внутренняя переменная не влияет на внешнюю.

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

-- TODO: Напишите здесь свой код
quiz iconПроверьте себя

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

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

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