Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

التكرار باستخدام ipairs()

جزء من قسم Logic & Flow في رحلة Lua على Coddy — الدرس 2 من 54.

بينما تعمل pairs() مع أي بنية جدول، توفر Lua وظيفة متخصصة تسمى ipairs() مصممة خصيصاً للجداول التي تأتي على نمط القوائم. تقوم هذه الوظيفة بالتكرار عبر الجداول بترتيب تسلسلي، بدءاً من الفهرس 1 وتستمر حتى تواجه قيمة nil.

إن صيغة ipairs() مشابهة لـ pairs():

for index, value in ipairs(myList) do
    -- استخدم index و value هنا
end

إليك مثال يتضمن قائمة بعناصر المهمة:

local questItems = {"Map", "Compass", "Torch", "Rope"}

for i, item in ipairs(questItems) do
    print(i .. ". " .. item)
end

الناتج:

1. Map
2. Compass
3. Torch
4. Rope

الفرق الرئيسي عن pairs() هو أن ipairs() يتوقف فوراً عندما يجد قيمة nil، حتى لو كان هناك المزيد من العناصر بعدها.

challenge icon

التحدي

سهل

اكتب دالة listTasks تأخذ جدول tasks وتعيد سلسلة نصية منسقة تسرد جميع المهام مع أرقام مواقعها.

استخدم ipairs() للتكرار عبر المهام بترتيب تسلسلي وبناء سلسلة نصية حيث يظهر في كل سطر رقم المهمة متبوعاً باسم المهمة بالتنسيق number. task. يجب أن تكون كل مهمة في سطر منفصل.

المعاملات:

  • tasks (جدول): جدول بنمط قائمة يحتوي على أسماء المهام كسلاسل نصية

القيمة المرجعة: سلسلة نصية مع ترقيم كل مهمة في سطر منفصل. التنسيق: 

1. task1
2. task2
3. task3

ورقة مرجعية

تكرر الدالة ipairs() عبر الجداول التي تأتي على نمط القائمة بترتيب تسلسلي، بدءاً من الفهرس 1 وتتوقف عند أول قيمة nil:

for index, value in ipairs(myList) do
    -- use index and value here
end

مثال:

local questItems = {"Map", "Compass", "Torch", "Rope"}

for i, item in ipairs(questItems) do
    print(i .. ". " .. item)
end
-- Output:
-- 1. Map
-- 2. Compass
-- 3. Torch
-- 4. Rope

الفرق الرئيسي: على عكس pairs()، تتوقف ipairs() فوراً عندما تواجه قيمة nil، حتى لو كانت هناك عناصر أخرى موجودة بعدها.

جرّب بنفسك

function listTasks(tasks)
    -- اكتب الكود هنا
end
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس Logic & Flow