Lua Academy · Lektion

Numerisk for-loop

Iterera över numeriska intervall med syntaxen for i=start,limit,step.

Lektion 3 av 412 steg

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 9

Nedrä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 0

Loopvariabeln ä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  date

Summering 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)  -- 30

Kapslad 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 12

Flyttalssteg

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 .. " ")
end

Bygga 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
end

break 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")
end

Berä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
  • break avslutar loopen i förtid
  • Standardmönster: bygga resultattabeller, söka i arrayer och ackumulera summor
Gratis att börja

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

  1. if-, elseif- och else-satser
  2. while- och repeat-until-loopar
  3. Numerisk for-loop
  4. Generisk for-loop och break
← Tillbaka till Lua Academy