วนซ้ำด้วย ipairs
วนซ้ำผ่านลำดับตามลำดับ
วนซ้ำด้วย ipairs เป็นบทเรียน Lua Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Lua Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน
เหตุผลที่ควรใช้ฟังก์ชันวนซ้ำ
การวนผ่านลำดับด้วยดัชนีใช้งานได้ แต่ ipairs สะอาดและปลอดภัยกว่า โดยจะส่งทั้งดัชนีและค่าแต่ละตัวให้คุณตามลำดับ
ฟังก์ชันนี้เริ่มที่ดัชนี 1 และหยุดที่ nil ตัวแรก จึงเหมาะอย่างยิ่งกับลำดับที่ไม่มีช่องว่าง
local fruits = {"apple", "banana", "cherry"}
for i, v in ipairs(fruits) do
print(i, v)
endรูปแบบของลูป
รูปแบบคือ for index, value in ipairs(t) do ... end
ในแต่ละรอบ index คือ ตำแหน่งที่เริ่มนับจาก 1 และ value คือสมาชิกที่อยู่ในตำแหน่งนั้น คุณไม่จำเป็นต้องสร้างตัวนับเอง
local colors = {"red", "green", "blue"}
for i, c in ipairs(colors) do
print("Color", i, "is", c)
endการไม่ใช้ดัชนี
หากคุณต้องการเฉพาะค่า ให้ตั้งชื่อดัชนีเป็น _ ตามธรรมเนียม เพื่อแสดงว่าไม่ได้ใช้งาน
ลูปยังคงเข้าถึงสมาชิกตามลำดับที่เริ่มนับจาก 1
local nums = {10, 20, 30}
local total = 0
for _, n in ipairs(nums) do
total = total + n
end
print("sum:", total)เริ่มที่ 1 และหยุดที่ช่องว่าง
ipairs เริ่มที่ดัชนี 1 และทำงานต่อไปตราบใดที่ดัชนีถัดไปไม่ใช่ nil
หากมีช่องว่าง ฟังก์ชันจะหยุดที่ตำแหน่งนั้น ดังนั้น ipairs จึงเหมาะกับลำดับที่ต่อเนื่อง ไม่ใช่ตารางที่มีตำแหน่งขาดหาย
local t = {"a", "b", nil, "d"}
for i, v in ipairs(t) do
print(i, v)
endการหาผลรวมของค่า
งานที่พบบ่อยคือการลดรายการให้เหลือตัวเลขเพียงหนึ่งค่า เช่น ผลรวมหรือค่าสูงสุด
ipairs ทำให้เขียนงานนี้ได้อ่านง่าย โดยเข้าถึงแต่ละค่าแล้วสะสมผลลัพธ์
local prices = {3, 7, 2, 9}
local max = prices[1]
for _, p in ipairs(prices) do
if p > max then max = p end
end
print("max:", max)การสร้างรายการใหม่
ใช้ ipairs ร่วมกับ table.insert เพื่อแปลงลำดับหนึ่งให้เป็นอีกลำดับหนึ่ง
ในที่นี้ เราคูณตัวเลขแต่ละตัวด้วยสองลงในตารางใหม่ โดยรักษาลำดับและดัชนีที่เริ่มต้นจาก 1 ไว้
local src = {1, 2, 3}
local doubled = {}
for _, n in ipairs(src) do
table.insert(doubled, n * 2)
end
print(doubled[1], doubled[2], doubled[3])ipairs เทียบกับ pairs
pairs จะเข้าถึงคีย์ทุกตัว รวมถึงคีย์สตริงด้วย โดยไม่มีการรับประกันลำดับ ส่วน ipairs จะเข้าถึงเฉพาะลำดับจำนวนเต็ม 1, 2, 3... ตามลำดับ
สำหรับอาร์เรย์ที่มีลำดับ ให้เลือกใช้ ipairs
local t = {"x", "y"}
t.name = "extra"
for i, v in ipairs(t) do
print(i, v)
endการกรองด้วยเงื่อนไข
ใช้ if ภายในลูปเพื่อเก็บไว้เฉพาะรายการที่ตรงกัน
ด้านล่างนี้ เราจะรวบรวมคำที่มีความยาวมากกว่าสามตัวอักษรไว้ในลำดับใหม่
local words = {"hi", "hello", "yo", "howdy"}
local long = {}
for _, w in ipairs(words) do
if #w > 3 then table.insert(long, w) end
end
print(long[1], long[2])การค้นหารายการ
หากต้องการค้นหา ให้ใช้ ipairs วนลูปและหยุดเมื่อพบรายการนั้น ดัชนีจะบอกตำแหน่งที่เริ่มนับจาก 1
เราจะคืนค่าก่อนกำหนดโดยใช้ break ทันทีที่พบเป้าหมาย
local names = {"Ann", "Bob", "Cy"}
local found = 0
for i, n in ipairs(names) do
if n == "Bob" then found = i break end
end
print("Bob at index", found)การนับระหว่างวนซ้ำ
คุณสามารถนับรายการที่ตรงกันได้โดยเพิ่มค่าตัวแปรภายในลูป
วิธีนี้ไม่ต้องจัดการดัชนีโดยตรง แต่ยังคงตรวจดูลำดับทั้งหมด
local marks = {5, 8, 3, 9, 6}
local passes = 0
for _, m in ipairs(marks) do
if m >= 6 then passes = passes + 1 end
end
print("passing:", passes)ipairs ซ้อนกัน
สำหรับตารางที่ประกอบด้วยตารางหลายชุด ให้ซ้อนลูป ipairs สองชั้นเพื่อเข้าถึงทุกเซลล์
ลูปด้านนอกจะวนตามแถว ส่วนลูปด้านในจะวนตามคอลัมน์ โดยทั้งคู่เริ่มนับจาก 1
local grid = {{1, 2}, {3, 4}}
for _, row in ipairs(grid) do
for _, cell in ipairs(row) do
print(cell)
end
endตรวจสอบอย่างรวดเร็ว
ทบทวนว่า ipairs เริ่มต้นและสิ้นสุดที่ใด
สรุปทบทวน
คุณได้เรียนรู้รูปแบบ for i, v in ipairs(t) ซึ่งจะเข้าถึงลำดับตามลำดับที่เริ่มจาก 1 และหยุดที่ช่องว่างแรก
ใช้รูปแบบนี้เพื่อหาผลรวม กรอง ค้นหา และแปลงรายการ ต่อไปคุณจะวัดความยาวด้วย # และเรียงลำดับรายการด้วย table.sort
คำถามที่พบบ่อย
บทเรียน “วนซ้ำด้วย ipairs” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “วนซ้ำด้วย ipairs” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Lua Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Lua Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “วนซ้ำด้วย ipairs”
วนซ้ำผ่านลำดับตามลำดับ คุณปฏิบัติ Lua Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Lua Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Lua Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “วนซ้ำด้วย ipairs” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Lua Academy นี้ได้ไหม
ได้ บทเรียน Lua Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- อาร์เรย์ในรูปตาราง
- เพิ่มและลบรายการ
- วนซ้ำด้วย ipairs
- ความยาวและการเรียงลำดับ