if-, elseif- och else-satser
Skriv villkorslogik med Lua:s if/elseif/else-syntax.
if-, elseif- och else-satser är en gratis lektion i Lua Academy på CoddyKit. Detta är lektion 1 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Lua Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Lua Academy innehåller totalt 4 lektioner.
Grundläggande if-sats
if-satsen utvärderar ett villkor och kör sitt block när villkoret är sant. I Lua är endast false och nil falska; allt annat – inklusive 0 och "" – är sant. Avsluta blocket 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
Kedja samman flera villkor med elseif och ange ett alternativ med else. Lua utvärderar villkoren uppifrån och ned och kör endast den första matchande grenen. Till skillnad från switch/case i andra språk är Luas elseif ett enda nyckelord, inte 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")
endLogiska operatorer i villkor
Lua använder and, or och not som logiska operatorer. De kortsluter utvärderingen: and returnerar det första falska värdet eller det sista värdet; or returnerar det första sanna värdet eller det sista värdet. Detta möjliggör idiomatiska mönster för standardvärden.
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ära idiomet med and/or
Lua har ingen ternär operator, men mönstret and/or kan efterlikna en sådan: condition and trueVal or falseVal. Detta fungerar så länge trueVal inte är false eller nil. För säkrare ternär logik kan Ni använda en inline-if-funktion.
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")) -- noKapslade if-satser
Ni kan kapsla if-satser inuti andra grenar. Varje kapslat block kräver ett eget end. Djup kapsling är ofta ett tecken på att Ni kan använda tidiga returer eller guard clauses för att göra logiken mindre kapslad.
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 är en tidig retur som hanterar ogiltiga fall eller gränsfall i början av en funktion och därmed minskar kapslingen. Mönstret håller koden för det normala förloppet utan indrag och gör den lättare att läsa.
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 negativeJämföra värden
Luas jämförelseoperatorer är: == (lika med), ~= (inte lika med), <, >, <=, >=. Observera att ~= betyder ”inte lika med” i Lua – inte !=. Strängar jämförs i lexikografisk ordning. Ni kan inte jämföra strängar direkt med tal.
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")
endStränglikhet
Två strängar är lika i Lua om och endast om de har samma byteinnehåll och längd. Lua internlagrar strängar, så lika strängar pekar ofta på samma minnesadress, vilket gör == till en snabb pekarjämförelse. Jämför aldrig strängar med is eller referenslikhet – == jämför alltid värdena.
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")
endJämförelse av tabeller och funktioner
Tabeller och funktioner jämförs via referens, inte efter innehåll. Två olika tabellliteraler med identiskt innehåll är inte lika, såvida de inte är samma objekt. Använd metametoder som __eq för att definiera anpassad likhet för 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) -- falseIdiomatiska mönster
Vanliga Lua-idiom med villkor: använd assert() för att validera förvillkor, använd tricket med and/or för korta standardvärden och undvik dubbla negationer (not not x) för att konvertera ett värde till ett booleskt värde.
-- 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, WorldSnabbkontroll
Vilka värden är falska i Lua?
Sammanfattning: villkor
Sammanfattning:
if ... elseif ... else ... end– den fullständiga formen för förgreningar- Endast
nilochfalseär falska and/orkortsluter utvärderingen och returnerar operandvärden~=betyder ”inte lika med” i Lua (inte !=)- Tabeller och funktioner jämförs via referens, strängar via värde
- Använd guard clauses för att minska kapslingen
Lär dig Lua med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 40
- Lektioner
- 159
Vanliga frågor
Är lektionen ”if-, elseif- och else-satser” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Lua Academy, inklusive ”if-, elseif- och else-satser”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Lua Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”if-, elseif- och else-satser”?
Skriv villkorslogik med Lua:s if/elseif/else-syntax. Ni övar på Lua Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Lua Academy?
Du behöver inga förkunskaper. Utbildningen i Lua Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”if-, elseif- och else-satser”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Lua Academy-lektionen?
Ja. Varje Lua Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- if-, elseif- och else-satser
- while- och repeat-until-loopar
- Numerisk for-loop
- Generisk for-loop och break