فرز مخصص باستخدام الدوال
جزء من قسم المنطق والتحكم في التدفق في رحلة Lua على Coddy — الدرس 8 من 54.
بينما يعمل table.sort() بشكل رائع مع القوائم البسيطة من الأرقام أو السلاسل النصية، إلا أن بيانات العالم الحقيقي غالباً ما تكون أكثر تعقيداً. قد يكون لديك جدول لسجلات اللاعبين، أو عناصر المخزون، أو نتائج الألعاب حيث يكون كل إدخال في حد ذاته جدولاً يحتوي على حقول متعددة.
لفرز هذه الهياكل المعقدة، تحتاج إلى إخبار table.sort() بالضبط بكيفية مقارنة مدخلين. هنا تصبح وظائف المقارنة المخصصة ضرورية. تأخذ وظيفة المقارنة عنصرين وتعيد true إذا كان يجب أن يأتي الأول قبل الثاني في الترتيب المفرز.
إليك مثال مع جدول لسجلات اللاعبين:
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)بعد عملية الفرز، سيتم ترتيب جدول players حسب score بترتيب تنازلي، بحيث يكون Bob في المركز الأول (200)، وCharlie في المركز الثاني (175)، وAlice في المركز الثالث (150). تقوم دالة المقارنة بالوصول إلى حقل score الخاص بكل جدول لاعب لتحديد ترتيبهم.
يمكنك الفرز حسب أي حقل تريده—الأسماء أبجديًا، أو المستويات رقميًا، أو حتى الجمع بين معايير متعددة.
جرّب بنفسك
لا يتضمّن هذا الدرس تحدّيًا برمجيًا.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المنطق والتحكم في التدفق
1التكرار المتقدم عبر الجداول
التكرار باستخدام pairs()التكرار باستخدام ipairs()pairs() مقابل ipairs()مراجعة - ورقة الشخصية2المزيد من دوال مكتبة Table
table.concat()إنشاء الجداول و unpack()table.sort()فرز مخصص باستخدام الدوالمراجعة - لوحة أعلى النتائج