0Pricing
Lua Academy · บทเรียน

วนซ้ำด้วย 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. อาร์เรย์ในรูปตาราง
  2. เพิ่มและลบรายการ
  3. วนซ้ำด้วย ipairs
  4. ความยาวและการเรียงลำดับ
← กลับไปที่ Lua Academy