Menu
Coddy logo textTech

מיון מותאם אישית באמצעות פונקציות

חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-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)

לאחר המיון, טבלת השחקנים תהיה מסודרת לפי ניקוד בסדר יורד, כשבוב במקום הראשון (200), צ'רלי במקום השני (175) ואליס במקום השלישי (150). פונקציית ההשוואה ניגשת לשדה score של כל טבלת שחקן כדי לקבוע את הסדר שלהן.

אפשר למיין לפי כל שדה שרוצים: שמות בסדר אלפביתי, רמות בסדר מספרי, או אפילו לשלב כמה קריטריונים.

נסו בעצמכם

השיעור הזה לא כולל אתגר קוד.

quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת התוכנית

תרגלו בעצמכם: קומפיילר Lua אונליין