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