Menu
Coddy logo textTech

Ámbito y bloques

Parte de la sección Fundamentals del Journey de Lua de Coddy — lección 86 de 90.

En Lua, puedes crear nuevos ámbitos en cualquier parte de tu código utilizando bloques do...end. Estos bloques te permiten controlar exactamente dónde se puede acceder a tus variables locales, dándote un control preciso sobre el ámbito de las variables.

Aquí tienes cómo puedes crear un nuevo ámbito con un bloque do...end:

local outerVar = "I'm outside"

do
    local innerVar = "I'm inside"
    print(outerVar)  -- Esto funciona
    print(innerVar)  -- Esto también funciona
end

print(outerVar)  -- Esto funciona
print(innerVar)  -- ¡Esto causaría un error!

El aspecto poderoso del alcance es que puedes tener variables locales con el mismo nombre en diferentes bloques, y estas permanecen completamente separadas:

local name = "Alice"

do
    local name = "Bob"  -- ¡Variable diferente!
    print(name)  -- Imprime "Bob"
end

print(name)  -- Imprime "Alice"

Cada bloque do...end crea su propio entorno aislado para variables locales. Las variables declaradas dentro de un bloque no pueden escapar al ámbito externo, mientras que las variables de los ámbitos externos pueden ser accedidas desde dentro de los bloques internos.

challenge icon

Desafío

Fácil

Crea bloques do...end anidados para demostrar cómo las variables locales con el mismo nombre permanecen completamente separadas en diferentes alcances.

Primero, crea una variable local llamada playerLevel con el valor 10 en el alcance externo e imprímela.

Luego crea un bloque do...end y dentro de él:

  • Declara una nueva variable local también llamada playerLevel con el valor 25
  • Imprime esta playerLevel interna

Después de que termine el bloque interno, imprime la playerLevel externa de nuevo para mostrar que permaneció sin cambios.

Esto demuestra que las variables locales con nombres idénticos en diferentes alcances son completamente independientes: la variable interna no afecta a la externa.

Hoja de referencia

Crea nuevos ámbitos en cualquier parte de tu código utilizando bloques do...end para controlar el alcance de las variables:

local outerVar = "I'm outside"

do
    local innerVar = "I'm inside"
    print(outerVar)  -- Esto funciona
    print(innerVar)  -- Esto también funciona
end

print(outerVar)  -- Esto funciona
print(innerVar)  -- ¡Esto causaría un error!

Las variables locales con el mismo nombre en diferentes bloques permanecen completamente separadas:

local name = "Alice"

do
    local name = "Bob"  -- ¡Variable diferente!
    print(name)  -- Imprime "Bob"
end

print(name)  -- Imprime "Alice"

Las variables declaradas dentro de un bloque no pueden escapar al ámbito externo, mientras que las variables de los ámbitos externos pueden ser accedidas desde dentro de los bloques internos.

Pruébalo tú mismo

-- TODO: Escribe tu código aquí
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentals