Menu
Coddy logo textTech

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

שיעור 9 מתוך 19 בקורס פונקציות ומצביעים ב-Golang של Coddy.

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

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

בואו נראה דוגמה לאופן שבו מגדירים פונקציה אנונימית:

b := func(x, y int) int { return x - y }
fmt.Println(b(100, 50))

כאן אנחנו מגדירים משתנה b ששומר פונקציה אנונימית שמבצעת חיסור. כשאנחנו קוראים לפונקציה, אנחנו פשוט משתמשים בשם המשתנה b(100, 50).

אפשר גם לקבל פונקציה אנונימית כתוצאה מפונקציה אחרת. לדוגמה:

func operation(a int) func(int) int {
    if a == 1 {
        return func(a int) int { return a + 10 }
    } else {
        return func(a int) int { return a * 10 }
    }
}
func main() {
    b := operation(1)
    fmt.Println(b(14))
}

כאן אנחנו מגדירים פונקציה רגילה בשם operation, והתוצאה (הערך המוחזר) תהיה פונקציה אנונימית <strong>func(int) int</strong> במקום ערך פשוט.

אנחנו משייכים את הערך המוחזר למשתנה b. מכיוון שאנחנו מעבירים 1 כפרמטר לפונקציה operation, הבלוק שיתבצע הוא זה:

return func(a int) int { return a + 10 }

כעת, כשאנחנו קוראים לפונקציה האנונימית שלנו b, עלינו להעביר ערך של מספר שלם, למשל, 14.

התוצאה תהיה:

24

זהו החישוב של a + 10, שבו אנחנו מעבירים את a, שערכו 14(<strong>b(14)</strong>).
 

challenge icon

אתגר

קל

כתבו פונקציה אנונימית שמקבלת שלושה ארגומנטים שלמים.

אם הארגומנט הראשון גדול מהארגומנט האחרון , החזירו את הסכום של כל הארגומנטים. אם לא, החזירו את המכפלה של הארגומנטים הראשון והאחרון .

שמרו את תוצאת הפונקציה בתוך משתנה שנקרא result.

נסו בעצמכם

package main

import "fmt"

func main() {
    // הגדירו את הפונקציה האנונימית והקצו אותה למשתנה בשם "result".
 
    
    
    // הדפיסו את התוצאה. אל תשנו את זה!
    fmt.Println("Result:", result(2, 3, 4))
    fmt.Println("Result:", result(8, 3, 4))
}

כל השיעורים ביחידה פונקציות ומצביעים ב-Golang

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