إنشاء الجداول و unpack()
جزء من قسم Logic & Flow في رحلة Lua على Coddy — الدرس 6 من 54.
توفر Lua زوجًا متكاملاً من التقنيات للتعامل مع قيم متعددة: بناء الجداول و table.unpack(). وتعد هذه التقنيات مفيدة بشكل خاص عند التعامل مع الدوال التي تتطلب معالجة مرنة للوسائط.
يمكنك التقاط قيم متعددة في جدول بنمط قائمة باستخدام بنية منشئ الجدول مع الأقواس المتعرجة. يجمع هذا كل القيم في هيكل جدول واحد.
local args = {10, 20, 30}
print(args[1]) -- المخرجات: 10
print(#args) -- المخرجات: 3تقوم الدالة table.unpack() بالعكس—فهي تأخذ جدولاً بنمط القائمة وتعيد جميع عناصره كقيم منفصلة. يتيح لك ذلك تمرير محتويات الجدول كوسيطات فردية إلى دالة.
local numbers = {5, 10, 15}
print(table.unpack(numbers)) -- المخرجات: 5 10 15تعمل هذه التقنيات معًا بسلاسة. يمكنك جمع القيم في جدول، والتلاعب بالجدول، ثم فكها مرة أخرى إلى قيم فردية.
التحدي
سهلاكتب دالة forwardArguments تأخذ ثلاثة أرقام a و b و c، وتعيد مجموعهم باستخدام بناء الجدول و table.unpack().
قم بإنشاء جدول يحتوي على الوسائط الثلاثة باستخدام صيغة {a, b, c}، ثم قم بفكها (unpack) وتمريرها إلى دالة أخرى تحسب مجموعهم.
المنطق:
- استخدم
{a, b, c}لإنشاء جدول يحتوي على جميع الوسائط الثلاثة - أنشئ دالة منفصلة تسمى
sumتأخذ ثلاثة معاملات وتعيد مجموعهم - استخدم
table.unpack()لتمرير قيم الجدول إلى دالةsum - أعد النتيجة من دالة
sum
المعاملات:
a(number): الرقم الأولb(number): الرقم الثانيc(number): الرقم الثالث
المخرجات: مجموع الأرقام الثلاثة (number)
ورقة مرجعية
صيغة منشئ الجدول {a, b, c, ...} تنشئ جدولاً بنمط القائمة. استخدم # للحصول على عدد العناصر.
local args = {10, 20, 30}
print(args[1]) -- الناتج: 10
print(#args) -- الناتج: 3table.unpack() تأخذ جدولاً بنمط القائمة وتعيد جميع عناصره كقيم منفصلة، مما يسمح لك بتمرير محتويات الجدول كوسيطات فردية إلى دالة.
local numbers = {5, 10, 15}
print(table.unpack(numbers)) -- الناتج: 5 10 15جرّب بنفسك
function forwardArguments(a, b, c)
-- إنشاء دالة منفصلة تحسب المجموع
-- إنشاء جدول يحتوي على جميع الوسائط الثلاثة
-- فك الجدول وتمرير القيم إلى دالة المجموع
end
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Logic & Flow
1التكرار المتقدم عبر الجداول
التكرار باستخدام pairs()التكرار باستخدام ipairs()pairs() مقابل ipairs()مراجعة - ورقة الشخصية2المزيد من دوال مكتبة Table
table.concat()إنشاء الجداول و unpack()table.sort()فرز مخصص باستخدام الدوالمراجعة - لوحة أعلى النتائج