Menu
Coddy logo textTech

Escopo e Blocos

Parte da seção Fundamentos do Journey de Lua da Coddy — lição 86 de 90.

Em Lua, você pode criar novos escopos em qualquer lugar do seu código usando blocos do...end. Esses blocos permitem que você controle exatamente onde suas variáveis locais podem ser acessadas, dando a você controle preciso sobre o escopo das variáveis.

Veja como você pode criar um novo escopo com um bloco do...end:

local outerVar = "I'm outside"

do
    local innerVar = "I'm inside"
    print(outerVar)  -- Isso funciona
    print(innerVar)  -- Isso também funciona
end

print(outerVar)  -- Isso funciona
print(innerVar)  -- Isso causaria um erro!

O aspecto poderoso do escopo é que você pode ter variáveis locais com o mesmo nome em blocos diferentes, e elas permanecem completamente separadas:

local name = "Alice"

do
    local name = "Bob"  -- Variável diferente!
    print(name)  -- Imprime "Bob"
end

print(name)  -- Imprime "Alice"

Cada bloco do...end cria seu próprio ambiente isolado para variáveis locais. Variáveis declaradas dentro de um bloco não podem escapar para o escopo externo, enquanto variáveis de escopos externos podem ser acessadas de dentro de blocos internos.

challenge icon

Desafio

Fácil

Crie blocos do...end aninhados para demonstrar como variáveis locais com o mesmo nome permanecem completamente separadas em escopos diferentes.

Primeiro, crie uma variável local chamada playerLevel com o valor 10 no escopo externo e imprima-a.

Em seguida, crie um bloco do...end e, dentro dele:

  • Declare uma nova variável local também chamada playerLevel com o valor 25
  • Imprima esta playerLevel interna

Após o término do bloco interno, imprima a playerLevel externa novamente para mostrar que ela permaneceu inalterada.

Isso demonstra que variáveis locais com nomes idênticos em escopos diferentes são completamente independentes - a variável interna não afeta a externa.

Experimente você mesmo

-- TODO: Escreva seu código aqui
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos