Numerisk for-loop
Iterera över numeriska intervall med syntaxen for i=start,limit,step.
Numerisk for-loop är en gratis lektion i Lua Academy på CoddyKit. Detta är lektion 3 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.
Syntax för numerisk for-loop
Lua:s numeriska for-loop har formen for var = start, limit, step do. step är som standard 1 om det utelämnas. Loopvariabeln är lokal för loopkroppen och kan inte ändras där. Gränsen och steget beräknas en gång innan loopen startar.
-- Count 1 to 5
for i = 1, 5 do
io.write(i .. " ")
end
print() -- 1 2 3 4 5
-- Count with step 2
for i = 1, 10, 2 do
io.write(i .. " ")
end
print() -- 1 3 5 7 9Nedräkning med negativt steg
Använd ett negativt steg för att räkna nedåt. Loopen fortsätter så länge var >= limit (när steget är negativt). Om startvärdet redan är mindre än gränsen när steget är negativt körs loopkroppen aldrig.
for i = 10, 1, -1 do
io.write(i .. " ")
end
print()
-- 10 9 8 7 6 5 4 3 2 1
-- Step -2
for i = 10, 0, -2 do
io.write(i .. " ")
end
print()
-- 10 8 6 4 2 0Loopvariabeln är lokal
Loopens kontrollvariabel (i) blir automatiskt lokal. Ni kan inte ändra dess värde i loopen — Lua ignorerar tilldelningar till loopvariabeln. Använd en separat lokal variabel om ni behöver hålla reda på iterationerna på ett annat sätt.
for i = 1, 5 do
-- i is read-only inside the loop
-- i = i + 10 -- this creates a new global i, not the loop var
print(i) -- always 1, 2, 3, 4, 5 as expected
end
-- i is nil here (it was local to the loop)
print(i) -- nil (or whatever global i was)Iterera över arrayer
Det vanligaste användningsområdet för numerisk for är att iterera över arrayer med hjälp av index. Använd #arr som gräns. Till skillnad från ipairs kan ni med denna form styra steglängden och iterera baklänges, och den är något snabbare för täta arrayer.
local fruits = {"apple", "banana", "cherry", "date"}
for i = 1, #fruits do
print(i, fruits[i])
end
-- 1 apple
-- 2 banana
-- 3 cherry
-- 4 dateSummering med for
Numeriska for-loopar passar utmärkt för att ackumulera värden från arrayer. Mönstret är alltid detsamma: initiera en resultatvariabel före loopen, uppdatera den i loopen och använd den efteråt.
local values = {10, 20, 30, 40, 50}
local total = 0
for i = 1, #values do
total = total + values[i]
end
print("Total:", total) -- 150
print("Count:", #values) -- 5
print("Mean:", total / #values) -- 30Kapslad numerisk for-loop
Kapsla två numeriska for-loopar för tvådimensionella operationer som matrisgenomgång, tabeller av tabeller eller generering av koordinatpar. Den yttre loopen går igenom raderna och den inre kolumnerna — varje iteration kommer åt en cell.
local rows, cols = 3, 4
for r = 1, rows do
for c = 1, cols do
io.write(string.format("%2d ", r * c))
end
print()
end
-- 1 2 3 4
-- 2 4 6 8
-- 3 6 9 12Flyttalssteg
Steget och gränserna kan vara flyttal, men det kan medföra precisionsfel. Använd heltal om ni behöver ett exakt antal iterationer. Om ni måste använda flyttal bör ni känna till att antalet loopvarv beräknas som floor((limit - start) / step) + 1.
-- Float step
for x = 0.0, 1.0, 0.25 do
io.write(x .. " ")
end
print()
-- 0.0 0.25 0.5 0.75 1.0
-- Prefer integer math when possible
for i = 0, 4 do
local x = i * 0.25
io.write(x .. " ")
endBygga en resultat-tabell
En numerisk for-loop är standardmetoden för att bygga en ny tabell från befintliga data. Skapa en tom tabell och fyll den sedan med hjälp av loopen och index.
local source = {1, 2, 3, 4, 5}
local squares = {}
for i = 1, #source do
squares[i] = source[i] ^ 2
end
for i = 1, #squares do
print(squares[i]) -- 1, 4, 9, 16, 25
endbreak i numerisk for-loop
Ni kan avsluta en numerisk for-loop i förtid med break. Körningen hoppar till satsen efter end. Detta är användbart vid linjär sökning: iterera tills målet hittas och avsluta sedan med break.
local data = {5, 3, 8, 1, 9, 2, 7}
local target = 9
local foundAt = nil
for i = 1, #data do
if data[i] == target then
foundAt = i
break
end
end
if foundAt then
print("Found at index " .. foundAt) -- 5
else
print("Not found")
endBeräkna antal loopvarv
Antalet iterationer i for i = start, limit, step är max(0, floor((limit - start) / step) + 1). Om ni förstår detta undviker ni fel med en för många eller en för få iterationer. När steget är 1 är antalet helt enkelt limit - start + 1.
-- How many iterations?
local count = 0
for i = 1, 10, 3 do
count = count + 1
end
print(count) -- 4 (i = 1, 4, 7, 10)
count = 0
for i = 5, 1 do -- step=1 but start > limit
count = count + 1
end
print(count) -- 0 (no iterations)Snabbkontroll
Vilka värden itererar for i = 10, 1, -3 do över?
Sammanfattning: numerisk for-loop
Sammanfattning:
for i = start, limit, step do— steget är som standard 1- Negativt steg för nedräkning
- Loopvariabeln är automatiskt lokal och skrivskyddad
- Gränsen och steget beräknas en gång innan loopen startar
breakavslutar loopen i förtid- Standardmönster: bygga resultattabeller, söka i arrayer och ackumulera summor
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 ”Numerisk for-loop” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Lua Academy, inklusive ”Numerisk for-loop”, 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 ”Numerisk for-loop”?
Iterera över numeriska intervall med syntaxen for i=start,limit,step. 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 3 av 4.
Hur lång tid tar lektionen ”Numerisk for-loop”?
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