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

إنشاء الجداول و unpack()

جزء من قسم المنطق والتحكم في التدفق في رحلة Lua على Coddy — الدرس 6 من 54.

تقدم Lua زوجًا متكاملًا من التقنيات للتعامل مع قيم متعددة: بناء الجداول و unpack(). وتُعد هذه التقنيات مفيدة بشكل خاص عند العمل مع الدوال التي تتطلب معالجة مرنة للوسائط (arguments).يمكنك التقاط قيم متعددة في جدول بأسلوب القوائم باستخدام **بناء منشئ الجداول** (table constructor syntax) مع الأقواس المعقوفة. يقوم هذا بتجميع كل القيم في بنية جدول واحدة.
local args = {10, 20, 30}
print(args[1])  -- المخرجات: 10
print(#args)    -- المخرجات: 3
تقوم الدالة unpack() بالعكس—فهي تأخذ جدولاً على نمط قائمة وتُرجع جميع عناصره كقيم منفصلة. يتيح لك ذلك تمرير محتويات الجدول كأرجومنتات منفردة إلى دالة.هام: بينما قامت الإصدارات الأحدث من Lua (5.2+) بنقل هذه الدالة إلى table.unpack()، فإن هذه البيئة تُشغّل Lua 5.1، لذا يجب عليك استخدام الدالة العامّة unpack().
local numbers = {5, 10, 15}
print(unpack(numbers))  -- المخرجات: 5    10    15
تعمل هذه التقنيات معًا بسلاسة. يمكنك جمع القيم في `table`، وتعديل الـ `table`، ثم استخدام `unpack` لإعادتها إلى قيم منفردة.
challenge icon

التحدي

سهل

اكتب دالة forwardArguments تأخذ ثلاثة أرقام a و b و c، وترجع مجموعهم باستخدام إنشاء الـ table و unpack().

قم بإنشاء table يحتوي على الوسائط الثلاثة باستخدام بناء الجملة {a, b, c}، ثم قم بفكها (unpack) وتمريرها إلى دالة أخرى تحسب مجموعها.

ملاحظة: يرجى استخدام دالة unpack() الـ global بدلاً من table.unpack() لضمان التوافق مع هذه البيئة.

المنطق:

  • استخدم {a, b, c} لإنشاء table يحتوي على جميع الوسائط الثلاثة
  • إنشاء دالة منفصلة تسمى sum تأخذ ثلاث معلمات وترجع مجموعها
  • استخدم unpack() لتمرير قيم الـ table إلى دالة sum
  • إرجاع النتيجة من دالة sum

المعلمات:

  • a (number): الرقم الأول
  • b (number): الرقم الثاني
  • c (number): الرقم الثالث

الإرجاع: مجموع جميع الأرقام الثلاثة (number)

جرّب بنفسك

function forwardArguments(a, b, c)
    -- أنشئ دالة منفصلة تحسب المجموع

    -- أنشئ جدولاً يحتوي على جميع الوسائط الثلاثة

    -- فك الجدول ومرّر القيم إلى دالة المجموع
    -- Hint: استخدم الدالة العامة 'unpack' لتوسيع وسائط الجدول

end
quiz iconاختبر نفسك

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

جميع دروس المنطق والتحكم في التدفق