الدوال المجهولة
جزء من قسم المنطق والتحكم في التدفق في رحلة Lua على Coddy. الدرس 13 من 54.
والآن بعد أن فهمتَ أنه يمكن تخزين الدوال في المتغيرات وتمريرها، توجد طريقة أكثر اختصارًا لكتابتها. فبدلًا من منح الدالة اسمًا دائمًا، يمكنك إنشاؤها مباشرةً في المكان الذي تحتاج إليها فيه. وتُسمّى هذه الدوال بالدوال المجهولة.
الدالة المجهولة هي ببساطة دالة بلا اسم. تعرّفها باستخدام الكلمة المفتاحية function متبوعةً مباشرةً بمعاملاتها وجسمها:
function(a, b)
return a + b
endينشئ هذا قيمة function يمكن استخدامها فورًا. تكون functions المجهولة مفيدة بشكل خاص عند تمرير functions كوسائط إلى functions أخرى. هل تتذكر مثال الفرز المخصص من قبل؟ إليك كيف يبدو باستخدام function مجهولة:
local players = {
{name = "Alice", score = 150},
{name = "Bob", score = 200},
{name = "Charlie", score = 175}
}
table.sort(players, function(a, b)
return a.score > b.score
end)بدلاً من تعريف function منفصلة ذات اسم للمقارنة، يتم إنشاء function مباشرةً باعتبارها الوسيطة الثانية لـ table.sort(). وهذا يجعل الشيفرة أكثر اختصارًا، ويحافظ على منطق الفرز في المكان الذي يُستخدم فيه.
التحدي
سهلWrite دالة filterByThreshold التي تتلقى numbers وthreshold وتُرجع table جديدة تحتوي فقط على الأرقام الأكبر من threshold.
استخدم table.insert() مع أسلوب الدالة المجهولة لتصفية numbers. أنشئ منطق التصفية بشكل مباشر دون تعريف دالة مسماة منفصلة.
المنطق:
- أنشئ table فارغة
- كرّر عبر table الخاصة بـ numbers
- لكل رقم، استخدم دالة مجهولة للتحقق مما إذا كان يتجاوز threshold
- إذا أعاد التحقق القيمة true، فأضف الرقم إلى table الخاصة بـ result
- أعد table الخاصة بـ result بعد التصفية
المعلمات:
numbers(table): table بأسلوب القوائم تحتوي على قيم رقميةthreshold(number): الحد الأدنى للقيمة (حصريًا) للتصفية
القيمة المُرجعة: table تحتوي فقط على الأرقام الأكبر من threshold (table)
جرّب بنفسك
function filterByThreshold(numbers, threshold)
-- اكتب الكود هنا
end
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق والتحكم في التدفق
1التكرار المتقدم عبر الجداول
التكرار باستخدام pairs()التكرار باستخدام ipairs()pairs() مقابل ipairs()مراجعة - ورقة الشخصية2المزيد من دوال مكتبة Table
table.concat()إنشاء الجداول و unpack()table.sort()فرز مخصص باستخدام الدوالمراجعة - لوحة أعلى النتائج3مفاهيم الدوال المتقدمة
إرجاع قيم متعددةالدوال متغيرة الوسائط (...)الدوال كقيم من الدرجة الأولىالدوال المجهولةما هو الـ Closure؟ملخص - معالج أحداث بسيطتدرّب بنفسك: مترجم Lua عبر الإنترنت