Istruzioni if, elseif ed else
Scriva la logica dei rami condizionali con la sintassi if/elseif/else di Lua.
Istruzioni if, elseif ed else è una lezione Lua Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Lua Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Lua Academy include 4 lezioni in totale.
Istruzione if di base
L'istruzione if valuta una condizione ed esegue il relativo blocco quando la condizione è vera. In Lua solo false e nil sono falsi; tutto il resto, inclusi 0 e "", è vero. Concluda il blocco 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
Colleghi più condizioni con elseif e fornisca un caso alternativo con else. Lua valuta le condizioni dall'alto verso il basso ed esegue solo il primo ramo corrispondente. A differenza di switch/case presenti in altri linguaggi, in Lua elseif è un'unica parola chiave, non 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")
endOperatori logici nelle condizioni
Lua utilizza and, or e not come operatori logici. La valutazione usa il cortocircuito: and restituisce il primo valore falso o l'ultimo valore; or restituisce il primo valore vero o l'ultimo valore. Questo consente di usare gli idiomi per i valori predefiniti.
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) -- GuestIdioma ternario con and/or
Lua non ha un operatore ternario, ma lo schema and/or ne offre un'approssimazione: condition and trueVal or falseVal. Funziona purché trueVal non sia false o nil. Per una logica ternaria più sicura, utilizzi una funzione if inline.
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")) -- noIstruzioni if annidate
È possibile annidare istruzioni if all'interno di altri rami. Ogni blocco annidato richiede il proprio end. Un annidamento profondo spesso indica la possibilità di utilizzare restituzioni anticipate o clausole di guardia per semplificare la logica.
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")
endClausole di guardia
Una clausola di guardia è una restituzione anticipata che gestisce i casi non validi o limite all'inizio di una funzione, riducendo l'annidamento. Questo schema mantiene il codice del "percorso principale" senza indentazione aggiuntiva e più facile da leggere.
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 negativeConfrontare i valori
Operatori di confronto di Lua: == (uguale), ~= (diverso), <, >, <=, >=. Nota: ~= è l'operatore Lua per "diverso", non !=. I confronti tra stringhe utilizzano l'ordine lessicografico. Non è possibile confrontare direttamente stringhe e numeri.
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")
endUguaglianza tra stringhe
Due stringhe sono uguali in Lua se e solo se hanno lo stesso contenuto in byte e la stessa lunghezza. Lua fa l'interning delle stringhe, quindi le stringhe uguali spesso puntano alla stessa area di memoria, rendendo == un rapido confronto dei puntatori. Non confronti mai le stringhe con is o con l'uguaglianza dei riferimenti: == confronta sempre i valori.
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")
endConfronto tra tabelle e funzioni
Le tabelle e le funzioni vengono confrontate per riferimento, non per contenuto. Due diversi valori letterali di tabella con contenuto identico non sono uguali, a meno che non siano lo stesso oggetto. Utilizzi metametodi come __eq per definire un'uguaglianza personalizzata per le tabelle.
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) -- falseSchemi idiomatici
Idiomi Lua comuni con le condizioni: utilizzi assert() per convalidare i prerequisiti, utilizzi il trucco and/or per valori predefiniti brevi ed eviti le doppie negazioni (not not x) per convertire qualsiasi valore in un 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, WorldVerifica rapida
Quali valori sono falsi in Lua?
Riepilogo: condizioni
Riepilogo:
if ... elseif ... else ... end: la forma completa per le diramazioni- Solo
nilefalsesono falsi and/orusano il cortocircuito e restituiscono i valori degli operandi~=significa "diverso" in Lua (non !=)- Le tabelle e le funzioni vengono confrontate per riferimento, le stringhe per valore
- Utilizzi le clausole di guardia per ridurre l'annidamento
Domande Frequenti
La lezione «Istruzioni if, elseif ed else» è gratuita?
Sì — il testo completo di «Istruzioni if, elseif ed else» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Lua Academy, passa a CoddyKit PRO. Il corso Lua Academy include 4 lezioni in totale.
Cosa imparerò in «Istruzioni if, elseif ed else»?
Scriva la logica dei rami condizionali con la sintassi if/elseif/else di Lua. Eserciti Lua Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Lua Academy?
Non è richiesta alcuna esperienza precedente. Lua Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Istruzioni if, elseif ed else»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Lua Academy?
Sì. Ogni lezione Lua Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Istruzioni if, elseif ed else
- Cicli while e repeat-until
- Ciclo for numerico
- for generico e break