if-, elseif- og else-setninger
Skriv logikk for betinget forgrening med Lua-syntaksen for if/elseif/else.
if-, elseif- og else-setninger er en gratis leksjon i Lua Academy på CoddyKit. Dette er leksjon 1 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Lua Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Lua Academy inneholder totalt 4 leksjoner.
Grunnleggende if-setning
if-setningen evaluerer en betingelse og kjører blokken når betingelsen er truthy. I Lua er bare false og nil falsy; alt annet – inkludert 0 og "" – er truthy. Avslutt blokken med 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
Kjed sammen flere betingelser med elseif, og angi et alternativ med else. Lua evaluerer betingelsene ovenfra og ned og kjører bare den første grenen som passer. I motsetning til switch/case i andre språk er Lua sin elseif ett enkelt nøkkelord (ikke 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")
endLogiske operatorer i betingelser
Lua bruker and, or og not som logiske operatorer. De kortslutter evalueringen: and returnerer den første falsy verdien eller den siste verdien; or returnerer den første truthy verdien eller den siste verdien. Dette muliggjør idiomatiske mønstre for standardverdier.
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) -- GuestDet ternære idiomet med and/or
Lua har ingen ternær operator, men mønsteret and/or kan etterligne den: condition and trueVal or falseVal. Dette fungerer så lenge trueVal ikke er false eller nil. For tryggere ternær logikk kan De bruke en innebygd if-funksjon.
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")) -- noNestede if-setninger
De kan nøste if-setninger inni andre grener. Hver nestede blokk krever sitt eget end. Dyp nøsting er ofte et tegn på at De kan bruke tidlige returer eller guard clauses for å forenkle logikken.
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")
endGuard clauses
En guard clause er en tidlig retur som håndterer ugyldige tilfeller eller spesialtilfeller øverst i en funksjon og dermed reduserer nøstingen. Dette mønsteret holder koden for den normale gjennomføringen uten innrykk og gjør den enklere å lese.
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 negativeSammenligning av verdier
Lua-operatører for sammenligning: == (lik), ~= (ulik), <, >, <=, >=. Merk: ~= er Lua sin operator for «ulik» – ikke !=. Strenger sammenlignes i leksikografisk rekkefølge. De kan ikke sammenligne strenger direkte med tall.
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")
endStrenglikhet
To strenger er like i Lua hvis og bare hvis de har samme byteinnhold og lengde. Lua internlagrer strenger, så like strenger peker ofte på samme minneområde, noe som gjør == til en rask pekersammenligning. Sammenlign aldri strenger med is eller referanselikhet – == sammenligner alltid verdien.
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")
endSammenligning av tabeller og funksjoner
Tabeller og funksjoner sammenlignes etter referanse, ikke etter innhold. To forskjellige tabellitteraler med identisk innhold er ikke like med mindre de er samme objekt. Bruk metametoder som __eq for å definere egendefinert likhet for tabeller.
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) -- falseIdiomatiske mønstre
Vanlige Lua-idiomer med betingelser: bruk assert() til å validere forutsetninger, bruk and/or-trikset for korte standardverdier, og unngå doble negasjoner (not not x) for å konvertere en verdi til en boolsk verdi.
-- 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, WorldHurtigsjekk
Hvilke verdier er falsy i Lua?
Oppsummering: Betingelser
Oppsummering:
if ... elseif ... else ... end– den fullstendige formen for forgrening- Bare
nilogfalseer falsy and/orkortslutter evalueringen og returnerer operandverdier~=betyr «ulik» i Lua (ikke !=)- Tabeller og funksjoner sammenlignes etter referanse, strenger etter verdi
- Bruk guard clauses for å redusere nøsting
Lær deg Lua med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 40
- Leksjoner
- 159
Ofte stilte spørsmål
Er leksjonen «if-, elseif- og else-setninger» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Lua Academy, inkludert «if-, elseif- og else-setninger», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i Lua Academy inneholder totalt 4 leksjoner.
Hva lærer jeg i «if-, elseif- og else-setninger»?
Skriv logikk for betinget forgrening med Lua-syntaksen for if/elseif/else. Du øver på Lua Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med Lua Academy?
Ingen tidligere erfaring er nødvendig. Lua Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.
Hvor lang tid tar leksjonen «if-, elseif- og else-setninger»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne Lua Academy-leksjonen?
Ja. Alle Lua Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- if-, elseif- og else-setninger
- while- og repeat-until-løkker
- Numerisk for-løkke
- Generisk for og break