Numerisk for-løkke
Iterer over numeriske intervaller med syntaksen for i=start,limit,step.
Numerisk for-løkke er en gratis leksjon i Lua Academy på CoddyKit. Dette er leksjon 3 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.
Syntaks for numerisk for
Lua sin numeriske for-løkke har formen for var = start, limit, step do. step er som standard 1 hvis den utelates. Løkkevariabelen er lokal for løkkekroppen og kan ikke endres der. Grensen og steget 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 9Nedtelling med negativt steg
Bruk et negativt steg for å telle nedover. Løkken fortsetter så lenge var >= limit (når steget er negativt). Hvis startverdien allerede er mindre enn grensen med et negativt steg, kjøres løkkekroppen aldri.
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økkevariabelen er lokal
Løkkens kontrollvariabel (i) er automatisk lokal. De kan ikke endre verdien inne i løkken – Lua ignorerer tilordninger til løkkevariabelen. Bruk en separat lokal variabel hvis De trenger å holde oversikt over iterasjonene på en annen måte.
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)Iterere over tabeller
Det vanligste bruksområdet for numerisk for er å iterere over tabeller ved hjelp av indeksen. Bruk #arr som grense. I motsetning til ipairs lar denne formen Dem styre stegstørrelsen og iterere baklengs, og den er litt raskere for kompakte tabeller.
local fruits = {"apple", "banana", "cherry", "date"}
for i = 1, #fruits do
print(i, fruits[i])
end
-- 1 apple
-- 2 banana
-- 3 cherry
-- 4 dateSummere med for
Numeriske for-løkker egner seg svært godt til å akkumulere verdier fra tabeller. Mønsteret er alltid det samme: initialiser en resultatvariabel før løkken, oppdater den inne i løkken, og bruk den etterpå.
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) -- 30Nestet numerisk for
Nøst to numeriske for-løkker for todimensjonale operasjoner som gjennomgang av matriser, tabeller med tabeller eller generering av koordinatpar. Den ytre løkken går gjennom rader, og den indre gjennom kolonner – hver iterasjon får tilgang til é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 12Desimale steg
Steget og grensene kan være flyttall, men dette kan føre til presisjonsfeil. Hold Dem til heltall hvis De trenger et nøyaktig antall iterasjoner. Hvis De må bruke flyttall, bør De være klar over at antallet løkker 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 .. " ")
endBygge en resultattabell
En numerisk for-løkke er standardmåten å bygge en ny tabell fra eksisterende data på. Opprett en tom tabell, og bruk deretter løkken til å fylle den etter 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
De kan avslutte en numerisk for-løkke tidlig med break. Kjøringen hopper til setningen etter end. Dette er nyttig ved lineært søk: iterer til målet blir funnet, og avslutt deretter 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 av antall iterasjoner
Antallet iterasjoner i for i = start, limit, step er max(0, floor((limit - start) / step) + 1). Når De forstår dette, unngår De «off-by-one»-feil. Når steget 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)Hurtigsjekk
Hva itererer for i = 10, 1, -3 do over?
Oppsummering: numerisk for
Oppsummering:
for i = start, limit, step do– steget er som standard 1- Negativt steg brukes til nedtelling
- Løkkevariabelen er automatisk lokal og skrivebeskyttet
- Grensen og steget evalueres én gang før løkken starter
breakavslutter løkken tidlig- Standardmønstre: bygge resultattabeller, søke i tabeller og akkumulere summer
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 «Numerisk for-løkke» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien Lua Academy, inkludert «Numerisk for-løkke», 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 «Numerisk for-løkke»?
Iterer over numeriske intervaller med syntaksen for i=start,limit,step. 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 3 av 4.
Hvor lang tid tar leksjonen «Numerisk for-løkke»?
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.