Menu
Coddy logo textTech

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

Часть раздела Fundamentals путешествия по 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)  -- Это вызовет ошибку!

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

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, чтобы показать, что она осталась неизменной.

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

Шпаргалка

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

local outerVar = "I'm outside"

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

print(outerVar)  -- Это работает
print(innerVar)  -- Это вызовет ошибку!

Локальные переменные с одинаковыми именами в разных блоках остаются полностью независимыми:

local name = "Alice"

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

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

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

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

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

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

Все уроки раздела Fundamentals