Numerisk for-løkke
Iterér over numeriske intervaller med syntaksen for i=start,limit,step.
Numerisk for-løkke er en gratis Lua Academy-lektion på CoddyKit. Dette er lektion 3 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Lua Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Lua Academy-kurset indeholder 4 lektioner i alt.
Syntaks for numerisk for
Lua's numeriske for-løkke har formen for var = start, limit, step do. step er som standard 1, hvis den udelades. Løkkens variabel er lokal for løkkens krop og kan ikke ændres inde i den. Grænsen og trinnet evalueres én gang, før løkken starter.
-- 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 9Nedtælling med negativt trin
Brug et negativt trin til at tælle nedad. Løkken fortsætter, så længe var >= limit (når trinnet er negativt). Hvis startværdien allerede er mindre end grænsen med et negativt trin, udføres løkkens krop 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 0Løkkevariablen er lokal
Løkkens kontrolvariabel (i) er automatisk lokal. Du kan ikke ændre dens værdi inde i løkken — Lua ignorerer tildelinger til løkkevariablen. Hvis du vil holde styr på gentagelser på en anden måde, skal du bruge en separat lokal variabel.
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)Gennemløb af arrays
Den mest almindelige anvendelse af numerisk for er at gennemløbe arrays efter indeks. Brug #arr som grænse. I modsætning til ipairs giver denne form dig mulighed for at styre trinstørrelsen og gennemløbe i omvendt rækkefølge, og den er lidt hurtigere for tætte arrays.
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
Numeriske for-løkker er ideelle til at akkumulere værdier fra arrays. Mønstret er altid det samme: initialisér en resultatvariabel før løkken, opdatér den inde i løkken, og brug den bagefter.
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) -- 30Indlejret numerisk for
Indlejr to numeriske for-løkker til todimensionelle operationer som gennemløb af matricer, tabeller af tabeller eller generering af koordinatpar. Den ydre løkke gennemløber rækkerne, og den indre løkke gennemløber kolonnerne — hver gentagelse tilgår én celle.
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 12Trin med flydende tal
Trinnet og grænserne kan være flydende tal, selvom det kan medføre præcisionsfejl. Hvis du har brug for et nøjagtigt antal gentagelser, skal du holde dig til heltal. Hvis du er nødt til at bruge flydende tal, skal du være opmærksom på, at antallet af gentagelser beregnes 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 .. " ")
endOpbygning af en resultattabel
En numerisk for-løkke er den almindelige måde at opbygge en ny tabel ud fra eksisterende data på. Opret en tom tabel, og brug derefter løkken til at udfylde den efter indeks.
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
Du kan afslutte en numerisk for-løkke tidligt med break. Udførelsen springer til sætningen efter end. Det er nyttigt ved lineær søgning: gennemløb elementerne, indtil målet findes, og afslut derefter 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")
endBeregning af antal gentagelser
Antallet af gentagelser i for i = start, limit, step er max(0, floor((limit - start) / step) + 1). Hvis du forstår dette, undgår du fejl med én for meget eller én for lidt. Når trinnet er 1, er antallet ganske 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)Hurtig kontrol
Hvilke værdier gennemløber for i = 10, 1, -3 do?
Opsummering: Numerisk for
Opsummering:
for i = start, limit, step do— trinnet er som standard 1- Negativt trin til nedtælling
- Løkkevariablen er automatisk lokal og skrivebeskyttet
- Grænsen og trinnet evalueres én gang, før løkken starter
breakafslutter løkken tidligt- Standardmønster: opbyg resultattabeller, søg i arrays, og akkumulér summer
Lær Lua med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 40
- Lektioner
- 159
Ofte stillede spørgsmål
Er lektionen “Numerisk for-løkke” gratis?
Ja — alle 3 lektioner i læringssporet Lua Academy, inklusive “Numerisk for-løkke”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Lua Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Numerisk for-løkke”?
Iterér over numeriske intervaller med syntaksen for i=start,limit,step. Du øver dig i Lua Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Lua Academy?
Der kræves ingen tidligere erfaring. Lua Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 4.
Hvor lang tid tager lektionen “Numerisk for-løkke”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Lua Academy-lektion?
Ja. Alle Lua Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.