Ámbito y bloques
Parte de la sección Fundamentos del Journey de Lua de Coddy. Lección 86 de 90.
En Lua, puedes crear nuevos ámbitos en cualquier parte de tu código usando 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.
Así es como 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) -- Imprime nil: innerVar solo existe dentro del bloqueEl aspecto más poderoso del ámbito es que puedes tener variables locales con el mismo nombre en distintos bloques y siguen siendo completamente independientes:
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 las variables locales. Las variables declaradas dentro de un bloque no pueden salir al ámbito externo, mientras que se puede acceder a las variables de los ámbitos externos desde los bloques internos.
Desafío
FácilCrea bloques do...end anidados para demostrar cómo las variables locales con el mismo nombre permanecen completamente separadas en distintos ámbitos.
Primero, crea una variable local llamada playerLevel con el valor 10 en el ámbito externo e imprímela.
Después, crea un bloque do...end y, dentro de él:
- Declara una nueva variable local también llamada
playerLevelcon el valor25 - Imprime esta variable interna
playerLevel
Después de que termine el bloque interno, imprime de nuevo la variable externa playerLevel para mostrar que no cambió.
Esto demuestra que las variables locales con nombres idénticos en distintos ámbitos son completamente independientes: la variable interna no afecta a la externa.
Pruébalo tú mismo
-- TODO: Escribe tu código aquíEsta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Operadores 2 Relacionales y Lógicos
Operadores de IgualdadOperadores RelacionalesEl Operador 'and'El Operador 'or'El Operador 'not'Evaluación de CortocircuitoValores Truthy y FalsyResumen - Lógica Simple7Lógica condicional básica
La sentencia if-thenLa sentencia if-then-elseLa sentencia elseifResumen - Cofre del tesoro10Tablas Parte 1: Estilo de lista
¿Qué es una tabla?Crear una tablaAcceder a elementos por índiceModificar elementos por índiceEl operador de longitud '#'table.insert()table.remove()Resumen - Gestionar miembros del grupo13Proyecto: Tienda de pociones sencilla
Configuración del proyectoAñadir una poción2Variables y tipos de datos
¿Qué es una variable?NúmerosStringsBooleanosEl valor 'nil'La función type()Convenciones de nomenclaturaResumen - Perfil de personaje5Salida básica
Imprimir literalesImprimir variablesImprimir múltiples valoresCombinar cadenas y variablesLa función tostring()EntradaConversión de tipos (Cast)Resumen - Informe de estadoResumen - Hasta 1208Fundamentos de manipulación de strings
string.len()string.upper & string.lowerstring.sub()string.rep()string.find()Repaso - Formatear nombre de usuario11Tablas 2: Estilo Diccionario
Pares Clave-ValorCreación de Tablas Estilo DiccionarioAcceso - Notación de CorchetesAcceso con Notación de PuntoAñadir y Modificar ParesEliminar Pares con nilResumen - Propiedades de Elementos14Ámbito de las variables
Variables globalesVariables locales¿Por qué usar variables locales?Ámbito y bloquesRepaso - El acertijo del ámbito3Operadores 1: Aritmética y Concatenación
Operadores aritméticosOperador de móduloOperador de exponenciaciónConcatenación de stringsPrecedencia de operadoresResumen: Cálculos sencillos6Proyecto: Mostrar estadísticas del personaje
Mensaje de bienvenidaDeclarar estadísticas del personaje9Fundamentos de las funciones
Declarar una funciónLlamar a una funciónFunciones con parámetrosFunciones con múltiples parámetrosLa sentencia 'return'Repaso - Calculadora de áreaPractica por tu cuenta: Compilador de Lua online