Sentencias if, elseif y else
Escriba lógica de ramificación condicional con la sintaxis if/elseif/else de Lua.
Sentencias if, elseif y else es una lección gratuita de Lua Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Lua Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Lua Academy incluye 4 lecciones en total.
Instrucción if básica
La instrucción if evalúa una condición y ejecuta su bloque cuando la condición es verdadera. En Lua, solo false y nil son falsos; todo lo demás, incluidos 0 y "", es verdadero. Finalice el bloque con end.
local score = 85
if score >= 90 then
print("A grade")
end
if score >= 60 then
print("Passing") -- prints
end
if 0 then
print("0 is truthy!") -- prints in Lua
endif/elseif/else
Encadene varias condiciones con elseif y proporcione una alternativa con else. Lua evalúa las condiciones de arriba abajo y ejecuta únicamente la primera rama que coincide. A diferencia de switch/case en otros lenguajes, elseif es una sola palabra clave en Lua, no else if.
local score = 75
if score >= 90 then
print("A")
elseif score >= 80 then
print("B")
elseif score >= 70 then
print("C") -- prints
elseif score >= 60 then
print("D")
else
print("F")
endOperadores lógicos en condiciones
Lua utiliza and, or y not como operadores lógicos. Aplican evaluación en cortocircuito: and devuelve el primer valor falso o el último valor; or devuelve el primer valor verdadero o el último valor. Esto permite patrones idiomáticos de valores predeterminados.
local age = 25
local hasID = true
if age >= 18 and hasID then
print("Entry allowed")
end
-- or for defaults
local name = nil
local display = name or "Guest"
print(display) -- GuestModismo ternario con and/or
Lua no tiene un operador ternario, pero el patrón and/or lo aproxima: condition and trueVal or falseVal. Funciona siempre que trueVal no sea false ni nil. Para una lógica ternaria más segura, utilice una función if en línea.
local x = 10
local label = (x > 5) and "big" or "small"
print(label) -- big
-- Safe ternary function
local function ternary(cond, t, f)
if cond then return t else return f end
end
print(ternary(false, "yes", "no")) -- noInstrucciones if anidadas
Puede anidar instrucciones if dentro de otras ramas. Cada bloque anidado requiere su propio end. Un anidamiento profundo suele indicar que convendría utilizar retornos anticipados o cláusulas de guarda para aplanar la lógica.
local loggedIn = true
local isAdmin = false
if loggedIn then
if isAdmin then
print("Admin dashboard")
else
print("User dashboard") -- prints
end
else
print("Login required")
endCláusulas de guarda
Una cláusula de guarda es un retorno anticipado que gestiona los casos no válidos o límite al principio de una función, reduciendo el anidamiento. Este patrón mantiene el código del «caso habitual» sin sangría adicional y facilita su lectura.
local function processAge(age)
if type(age) ~= "number" then
return nil, "age must be a number"
end
if age < 0 then
return nil, "age cannot be negative"
end
-- happy path
return math.floor(age)
end
print(processAge(25.7)) -- 25
print(processAge(-1)) -- nil age cannot be negativeComparación de valores
Operadores de comparación de Lua: == (igual), ~= (distinto), <, >, <=, >=. Nota: ~= es el operador «distinto» de Lua, no !=. Las comparaciones de cadenas utilizan el orden lexicográfico. No puede comparar directamente cadenas con números.
print(1 == 1) -- true
print(1 ~= 2) -- true
print("abc" < "abd") -- true (lexicographic)
print("10" == 10) -- false (different types)
-- Safe nil check
local val = nil
if val == nil then
print("no value")
endIgualdad de cadenas
Dos cadenas son iguales en Lua si y solo si tienen el mismo contenido y la misma longitud en bytes. Lua interna las cadenas, por lo que las cadenas iguales suelen apuntar a la misma posición de memoria, lo que permite que == sea una comparación rápida de punteros. Nunca compare cadenas con is ni mediante igualdad de referencias; == siempre compara por valor.
local s1 = "hello"
local s2 = "hel" .. "lo"
print(s1 == s2) -- true (same content)
print(s1 == "Hello") -- false (case sensitive)
-- Check for empty string
local name = ""
if name == "" or name == nil then
print("name is empty or nil")
endComparación de tablas y funciones
Las tablas y las funciones se comparan por referencia, no por contenido. Dos literales de tabla diferentes con contenido idéntico no son iguales, a menos que sean el mismo objeto. Utilice metamétodos como __eq para definir una igualdad personalizada para las tablas.
local t1 = {1, 2, 3}
local t2 = {1, 2, 3}
local t3 = t1
print(t1 == t2) -- false (different objects)
print(t1 == t3) -- true (same reference)
local f1 = function() end
local f2 = function() end
print(f1 == f2) -- falsePatrones idiomáticos
Modismos habituales de Lua con condicionales: utilice assert() para validar las precondiciones, utilice el truco de and/or para valores predeterminados breves y evite las dobles negaciones (not not x) para convertir cualquier valor en booleano.
-- assert pattern
local function sqrt(n)
assert(n >= 0, "sqrt of negative")
return math.sqrt(n)
end
-- Convert to boolean
local val = 42
local boolVal = not not val
print(boolVal) -- true
-- Default parameter
local function greet(name)
name = name or "World"
print("Hello, " .. name)
end
greet() -- Hello, WorldComprobación rápida
¿Qué valores son falsos en Lua?
Recapitulación: condicionales
Resumen:
if ... elseif ... else ... end: la forma completa de ramificación- Solo
nilyfalseson falsos and/oraplican evaluación en cortocircuito y devuelven los valores de los operandos~=significa «distinto» en Lua (no !=)- Las tablas y las funciones se comparan por referencia; las cadenas, por valor
- Utilice cláusulas de guarda para reducir el anidamiento
Aprende Lua con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 40
- Lecciones
- 159
Preguntas frecuentes
¿La lección «Sentencias if, elseif y else» es gratis?
Sí — el texto completo de «Sentencias if, elseif y else» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Lua Academy, actualiza a CoddyKit PRO. El curso de Lua Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Sentencias if, elseif y else»?
Escriba lógica de ramificación condicional con la sintaxis if/elseif/else de Lua. Practicas Lua Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Lua Academy?
No se requiere experiencia previa. Lua Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Sentencias if, elseif y else»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Lua Academy?
Sí. Cada lección de Lua Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Sentencias if, elseif y else
- Bucles while y repeat-until
- Bucle for numérico
- for genérico y break