I denna lektion kommer du lära dig hur du använder if-satser, loopar och andra kontrollstrukturer i Lua för att skapa mer avancerade program.
If-satser används för att utföra olika kod beroende på om ett villkor är sant eller falskt. Grundläggande syntax för if-satser i Lua är:
if villkor then
-- Kod som körs om villkoret är sant
end
Du kan också använda else och elseif för mer komplexa villkor:
local poäng = 85
if poäng >= 90 then
print("Du fick A!")
elseif poäng >= 80 then
print("Du fick B!")
elseif poäng >= 70 then
print("Du fick C!")
elseif poäng >= 60 then
print("Du fick D!")
else
print("Du fick F!")
end
Följande jämförelseoperatorer kan användas i villkor:
== - Lika med~= - Inte lika med (används istället för != i andra språk)> - Större än< - Mindre än>= - Större än eller lika med<= - Mindre än eller lika medLua använder också logiska operatorer för att kombinera villkor:
and - Båda villkoren måste vara sannaor - Minst ett av villkoren måste vara santnot - Inverterar ett villkor (sant blir falskt, falskt blir sant)then efter villkoret och end för att avsluta if-satsen.
While-loopar upprepar kod så länge ett villkor är sant:
local count = 1
while count <= 5 do
print("Count är: " .. count)
count = count + 1
end
Detta kommer skriva ut:
Count är: 1
Count är: 2
Count är: 3
Count är: 4
Count är: 5
Lua har två typer av for-loopar: numeriska och generiska.
Dessa används när du vill upprepa något ett bestämt antal gånger:
-- Räkna från 1 till 5
for i = 1, 5 do
print("Nummer " .. i)
end
Du kan också ange ett steg (increment) som tredje parameter:
-- Räkna jämna tal från 2 till 10
for i = 2, 10, 2 do
print("Jämnt tal: " .. i)
end
Dessa används för att loopa genom tabeller (Luas arrayer/listor):
local frukter = {"äpple", "banan", "apelsin", "päron"}
-- Loopa genom indexerade element med ipairs
for index, frukt in ipairs(frukter) do
print(index .. ": " .. frukt)
end
-- För associativa tabeller (som fungerar som dictionaries)
local person = {namn = "Lisa", ålder = 28, stad = "Stockholm"}
-- Loopa genom nycklar och värden med pairs
for nyckel, värde in pairs(person) do
print(nyckel .. ": " .. värde)
end
Lua stödjer break för att avsluta en loop i förtid:
for i = 1, 10 do
if i == 6 then
print("Hittade 6! Avslutar loopen.")
break -- Avsluta loopen när i är 6
end
print("Nummer: " .. i)
end
Lua har inte inbyggt stöd för continue, men det kan simuleras med extra logik eller genom att använda en goto-sats (i Lua 5.2+):
for i = 1, 10 do
if i % 2 == 0 then
goto fortsätt -- Simulera continue för jämna tal
end
print("Udda tal: " .. i)
::fortsätt::
end
Skapa ett enkelt "gissa talet"-spel med följande steg:
Tips: Använd io.read("*n") för att läsa in ett nummer från användaren.
-- Gissa talet spel
local hemligt_tal = 42
local antal_gissningar = 0
local gissning
print("Välkommen till Gissa Talet!")
print("Jag tänker på ett tal mellan 1 och 100.")
while true do
io.write("Din gissning: ")
gissning = io.read("*n")
antal_gissningar = antal_gissningar + 1
if gissning < hemligt_tal then
print("För lågt! Försök igen.")
elseif gissning > hemligt_tal then
print("För högt! Försök igen.")
else
print("Rätt! " .. hemligt_tal .. " är korrekt!")
print("Du gissade rätt på " .. antal_gissningar .. " försök.")
break
end
end
Skapa ett program som skriver ut en multiplikationstabell för ett givet nummer:
-- Multiplikationstabell
io.write("Ange ett tal för multiplikationstabell: ")
local tal = io.read("*n")
print("\nMultiplikationstabell för " .. tal .. ":")
print("-----------------------------")
for i = 1, 10 do
local resultat = tal * i
-- Formatera utskriften så att siffrorna är justerade
print(tal .. " x " .. string.format("%2d", i) .. " = " .. string.format("%3d", resultat))
end
print("-----------------------------")