التكرار باستخدام ipairs
كرّر على المتتاليات بالترتيب
التكرار باستخدام ipairs درس مجاني في Lua Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Lua Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Lua Academy 4 دروس في المجموع.
لماذا نستخدم ipairs؟
يمكن المرور عبر التسلسل باستخدام الفهارس، لكن 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» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Lua Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Lua Academy 4 دروس في المجموع.
ماذا ستتعلم في «التكرار باستخدام ipairs»؟
كرّر على المتتاليات بالترتيب تتمرن على Lua Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Lua Academy؟
لا تُشترط خبرة سابقة. Lua Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «التكرار باستخدام ipairs»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Lua Academy هذا؟
نعم. كل درس في Lua Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- المصفوفات بوصفها جداول
- إضافة العناصر وإزالتها
- التكرار باستخدام ipairs
- الطول والترتيب