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