פונקציות Lambda חלק 2
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-GDScript של Coddy. שיעור 55 מתוך 78.
למבדה בשורה אחת יכולה לבחור את התוצאה שלה באמצעות האופרטור התלת־אופני, value_if_true if condition else value_if_false:
var check_age = func(age): return "Adult" if age >= 18 else "Minor"
print(check_age.call(20)) # Adultליותר משני מקרים, שרשר תנאי שלישוני שני אחרי else, או כתוב את הלמבדה כבלוק עם if ו-elif:
var grade = func(score):
if score == 100:
return "Perfect"
elif score >= 60:
return "Pass"
return "Fail"
print(grade.call(75)) # Passמכיוון שלמבדה היא ערך, אפשר להעביר אותה לפונקציה. הצהר על הפרמטר עם הטיפוס Callable והפעל אותו באמצעות call():
func apply_twice(fn: Callable, value):
return fn.call(fn.call(value))print(apply_twice(func(n): return n + 3, 1)) # 7אפשר להעביר פונקציה בעלת שם באותו אופן: כותבים את שמה בלי סוגריים, כמו ב־apply_twice(double, 5).
גם שיטות מובנות מקבלות פונקציות. sort_custom() ממיינת מערך באמצעות למבדה שמקבלת שני איברים ומחזירה true כשהאיבר הראשון צריך לבוא קודם:
var scores = [40, 90, 75]
scores.sort_custom(func(a, b): return a > b)
print(scores) # [90, 75, 40]ביטוי lambda יכול לקרוא את המשתנים המקומיים שסביבו, אבל הוא מעתיק את הערכים שלהם כשהוא נוצר. שינוי של משתנה כזה לאחר מכן לא משפיע על ביטוי ה-lambda, והשמה אליו בתוך ביטוי ה-lambda לא משנה את המשתנה שמחוץ לו.
אתגר
קלהתוכנית קוראת מספר שלם. צרו lambda ושמרו אותו במשתנה בשם categorize_number. הוא מקבל מספר אחד ומחזיר:
Positiveאם המספר גדול מ-0Zeroאם המספר הוא0Negativeאם המספר קטן מ-0
קראו לו עם המספר שקראתם והדפיסו את התוצאה. עבור הקלט 10, הפלט הוא:
Positiveנסו בעצמכם
extends Node
func _ready():
var number := int(OS.read_string_from_stdin())
# צרו כאן את פונקציית הלמבדה categorize_number
# קראו לה עם number והדפיסו את התוצאה
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
10פונקציות מתקדמות
החזרת ערכים מרוביםפונקציות Lambda חלק 1פונקציות Lambda חלק 2סיכום – מיון עם Lambdaפונקציות רקורסיביות חלק 1פונקציות רקורסיביות חלק 2סיכום – סכימת מערך מקונן2קבלת החלטות מתקדמת
התאמה עם משתניםתנאי סף להתאמהתבניות מערכיםתבניות מילוניםבדיקות חברותסיכום – מנתח פקודות5אפליקציית ספר אנשי קשר
הצגת התפריטהוספת איש קשר8מנהל רשומות תלמידים
סקירת הפרויקטהוספת תלמידתרגלו בעצמכם: קומפיילר GDScript אונליין