ลูป for เชิงตัวเลข
วนซ้ำช่วงตัวเลขด้วยไวยากรณ์ for i=start,limit,step
ลูป for เชิงตัวเลข เป็นบทเรียน Lua Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Lua Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน
ไวยากรณ์ for แบบตัวเลข
ลูป for แบบตัวเลขของ Lua มีรูปแบบเป็น for var = start, limit, step do หากไม่ระบุ step ค่าปริยายจะเป็น 1 ตัวแปรของลูปจะเป็นตัวแปรเฉพาะที่ภายในส่วนเนื้อหาลูป และไม่สามารถแก้ไขภายในได้ ค่า limit และ step จะถูกประเมินครั้งเดียวก่อนเริ่มลูป
-- 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นับถอยหลังด้วย step ติดลบ
ใช้ step ติดลบเพื่อการนับถอยหลัง เมื่อตัว step เป็นค่าลบ ลูปจะทำงานต่อไปตราบใดที่ var >= limit หากค่าเริ่มต้นน้อยกว่า limit อยู่แล้วขณะที่ใช้ step ติดลบ ส่วนเนื้อหาลูปจะไม่ทำงานเลย
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ตัวแปรของลูปเป็นตัวแปรเฉพาะที่
ตัวแปรควบคุมลูป (i) จะเป็นตัวแปรเฉพาะที่โดยอัตโนมัติ คุณไม่สามารถเปลี่ยนค่าของตัวแปรนี้ภายในลูปได้ เพราะ Lua จะไม่สนใจการกำหนดค่าให้ตัวแปรของลูป หากต้องการติดตามรอบการทำงานในลักษณะอื่น ให้ใช้ตัวแปรเฉพาะที่อีกตัวหนึ่ง
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)วนผ่านอาร์เรย์
การใช้งานทั่วไปที่สุดของ for แบบตัวเลขคือการวนผ่านอาร์เรย์ตามดัชนี ใช้ #arr เป็นขีดจำกัด ต่างจาก ipairs รูปแบบนี้ช่วยให้ควบคุมขนาดของ step และวนย้อนกลับได้ อีกทั้งยังเร็วกว่าเล็กน้อยสำหรับอาร์เรย์ที่มีข้อมูลต่อเนื่อง
local fruits = {"apple", "banana", "cherry", "date"}
for i = 1, #fruits do
print(i, fruits[i])
end
-- 1 apple
-- 2 banana
-- 3 cherry
-- 4 dateหาผลรวมด้วย for
ลูป for แบบตัวเลขเหมาะอย่างยิ่งสำหรับการสะสมค่าจากอาร์เรย์ รูปแบบจะเหมือนเดิมเสมอ ได้แก่ กำหนดค่าตัวแปรผลลัพธ์ก่อนลูป อัปเดตค่าภายในลูป แล้วนำไปใช้หลังลูป
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) -- 30for แบบตัวเลขซ้อนกัน
ซ้อนลูป for แบบตัวเลขสองลูปสำหรับการทำงานสองมิติ เช่น การวนผ่านเมทริกซ์ ตารางซ้อนตาราง หรือการสร้างคู่พิกัด ลูปภายนอกใช้กับแถว ส่วนลูปภายในใช้กับคอลัมน์ แต่ละรอบจะเข้าถึงเซลล์หนึ่งรายการ
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 12step แบบทศนิยม
step และขีดจำกัดสามารถเป็นเลขทศนิยมได้ แต่การทำเช่นนี้อาจทำให้เกิดข้อผิดพลาดด้านความแม่นยำ หากต้องการจำนวนรอบที่แน่นอน ควรใช้จำนวนเต็ม หากจำเป็นต้องใช้เลขทศนิยม โปรดทราบว่าจำนวนรอบจะคำนวณด้วย 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สร้างตารางผลลัพธ์
ลูป for แบบตัวเลขเป็นวิธีมาตรฐานสำหรับสร้างตารางใหม่จากข้อมูลที่มีอยู่ ให้สร้างตารางว่างก่อน จากนั้นใช้ลูปเติมข้อมูลตามดัชนี
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 ใน for แบบตัวเลข
คุณสามารถออกจาก for แบบตัวเลขก่อนกำหนดด้วย break การทำงานจะกระโดดไปยังคำสั่งหลัง end วิธีนี้มีประโยชน์สำหรับการค้นหาแบบลำดับเดียว โดยวนไปจนพบเป้าหมายแล้วจึงใช้ 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การคำนวณจำนวนรอบของลูป
จำนวนรอบของ for i = start, limit, step คือ max(0, floor((limit - start) / step) + 1) การทำความเข้าใจเรื่องนี้ช่วยป้องกันข้อผิดพลาดแบบนับเกินหรือนับขาด เมื่อ step เป็น 1 จำนวนรอบจะเท่ากับ 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)ตรวจสอบความเข้าใจ
for i = 10, 1, -3 do จะวนผ่านค่าใดบ้าง
สรุป: for แบบตัวเลข
สรุป:
for i = start, limit, step do— step มีค่าปริยายเป็น 1- ใช้ step ติดลบสำหรับการนับถอยหลัง
- ตัวแปรของลูปเป็นตัวแปรเฉพาะที่และอ่านได้อย่างเดียวโดยอัตโนมัติ
- ขีดจำกัดและ step จะถูกประเมินครั้งเดียวก่อนเริ่มลูป
breakใช้ออกจากลูปก่อนกำหนด- รูปแบบมาตรฐาน: สร้างตารางผลลัพธ์ ค้นหาในอาร์เรย์ และสะสมผลรวม
คำถามที่พบบ่อย
บทเรียน “ลูป for เชิงตัวเลข” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ลูป for เชิงตัวเลข” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Lua Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ลูป for เชิงตัวเลข”
วนซ้ำช่วงตัวเลขด้วยไวยากรณ์ for i=start,limit,step คุณปฏิบัติ Lua Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Lua Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Lua Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “ลูป for เชิงตัวเลข” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Lua Academy นี้ได้ไหม
ได้ บทเรียน Lua Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ