Menu
Coddy logo textTech

פונקציות אנונימיות

חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Lua של Coddy. שיעור 13 מתוך 54.

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

פונקציה אנונימית היא פשוט פונקציה ללא שם. מגדירים אותה באמצעות מילת המפתח function, ומיד אחריה הפרמטרים והגוף שלה:

function(a, b)
    return a + b
end

פעולה זו יוצרת ערך של פונקציה שאפשר להשתמש בו מיד. פונקציות אנונימיות שימושיות במיוחד כשמעבירים פונקציות כארגומנטים לפונקציות אחרות. זוכרים את דוגמת המיון המותאם אישית מהחלק הקודם? כך היא נראית עם פונקציה אנונימית:

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.sort(). כך הקוד קומפקטי יותר, ולוגיקת המיון נמצאת בדיוק במקום שבו משתמשים בה.

challenge icon

אתגר

קל

כתבו פונקציה filterByThreshold שמקבלת את numbers ואת threshold ומחזירה טבלה חדשה שמכילה רק מספרים הגדולים מהסף.

השתמשו ב-table.insert() ובגישה של פונקציה אנונימית כדי לסנן את המספרים. צרו את לוגיקת הסינון באופן מקומי, בלי להגדיר פונקציה נפרדת בעלת שם.

לוגיקה:

  • צרו טבלת תוצאות ריקה
  • עברו על המספרים שבטבלה
  • עבור כל מספר, השתמשו בפונקציה אנונימית כדי לבדוק אם הוא גדול מהסף
  • אם הבדיקה מחזירה true, הוסיפו את המספר לטבלת התוצאות
  • החזירו את טבלת התוצאות המסוננת

פרמטרים:

  • numbers (טבלה): טבלה בסגנון רשימה שמכילה ערכים מספריים
  • threshold (מספר): הערך המינימלי (לא כולל) לסינון

ערך מוחזר: טבלה שמכילה רק מספרים הגדולים מהסף (טבלה)

נסו בעצמכם

function filterByThreshold(numbers, threshold)
    -- כתבו כאן קוד
end
quiz iconבחנו את עצמכם

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

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

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