pairs() مقابل ipairs()
جزء من قسم Logic & Flow في رحلة Lua على Coddy — الدرس 3 من 54.
الآن بعد أن تعلمت كلاً من pairs() و ipairs()، من المهم فهم متى تستخدم كل منهما. يعتمد الاختيار كلياً على هيكل جدولك وما تحاول تحقيقه.
استخدم ipairs() عندما يكون لديك جدول بنمط قائمة بمفاتيح صحيحة متسلسلة تبدأ من 1. يقوم بمعالجة العناصر بالترتيب ويتوقف عند أول قيمة nil، مما يجعله مثالياً للمصفوفات التي يهم فيها الترتيب.
استخدم pairs() عندما يحتوي جدولك على مفاتيح نصية، أو أنواع مفاتيح مختلطة، أو عندما تحتاج إلى الوصول إلى جميع المدخلات بغض النظر عن الفجوات. فهو يقوم بالتكرار عبر كل زوج (مفتاح-قيمة) في الجدول دون أي ترتيب محدد.
تأمل هذا الجدول المختلط:
local gameData = {
"Level 1",
"Level 2",
"Level 3",
currentLevel = 2,
playerName = "Hero"
}إذا استخدمت ipairs()، فسترى فقط سلاسل المستويات الثلاثة. وإذا استخدمت pairs()، فسترى جميع المدخلات الخمسة بما في ذلك مفاتيح السلاسل النصية.
التحدي
سهلاكتب دالة countSequentialItems تأخذ جدول data وتُعيد عدد العناصر ذات المفاتيح الصحيحة المتسلسلة.
استخدم ipairs() لعد عدد العناصر الموجودة في الجزء المتسلسل من الجدول (بدءاً من الفهرس 1 وحتى أول nil). سيساعدك هذا على فهم الفرق بين ipairs() و pairs() عند التعامل مع الجداول المختلطة.
المعاملات:
data(جدول): جدول مختلط يحتوي على مفاتيح صحيحة متسلسلة ومفاتيح نصية
القيمة المرجعة: عدد العناصر المتسلسلة (رقم)
ورقة مرجعية
استخدم ipairs() للجداول التي تشبه القوائم ذات المفاتيح الصحيحة المتسلسلة التي تبدأ من 1. فهي تعالج العناصر بالترتيب وتتوقف عند أول قيمة nil:
for i, value in ipairs(myList) do
-- يعالج العناصر المتسلسلة فقط
endاستخدم pairs() للجداول ذات المفاتيح النصية، أو أنواع المفاتيح المختلطة، أو عندما تحتاج إلى الوصول إلى جميع المدخلات بغض النظر عن الفجوات. فهي تمر عبر كل زوج (مفتاح-قيمة) بدون ترتيب محدد:
for key, value in pairs(myTable) do
-- يعالج جميع أزواج المفتاح-القيمة
endمثال مع جدول مختلط:
local gameData = {
"Level 1",
"Level 2",
"Level 3",
currentLevel = 2,
playerName = "Hero"
}
-- ترى ipairs() فقط: "Level 1", "Level 2", "Level 3"
-- ترى pairs() جميع المدخلات الخمسةجرّب بنفسك
function countSequentialItems(data)
-- اكتب الكود هنا
end
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1التكرار المتقدم عبر الجداول
التكرار باستخدام pairs()التكرار باستخدام ipairs()pairs() مقابل ipairs()مراجعة - ورقة الشخصية2المزيد من دوال مكتبة Table
table.concat()إنشاء الجداول و unpack()table.sort()فرز مخصص باستخدام الدوالمراجعة - لوحة أعلى النتائج