Menu
Coddy logo textTech

יסודות הסגירות

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Swift של Coddy. שיעור 38 מתוך 56.

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

let double = { (n: Int) -> Int in
    return n * 2
}
print(double(5))                  // 10

Swift יכולה להסיק את הטיפוסים כשההקשר ברור, ולכן לעיתים רחוקות כותבים את הצורה הארוכה. בתוך map, filter וכו׳, הצורה המקוצרת היא המקובלת:

let nums = [1, 2, 3, 4]
let doubled = nums.map { n in n * 2 }
let alsoDoubled = nums.map { $0 * 2 }    // הקצר ביותר, $0 הוא הארגומנט הראשון

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

challenge icon

אתגר

קל

קרא שתי שורות קלט:

  1. מספר שלם x
  2. רשימה של מספרים שלמים המופרדים בפסיקים

הגדר שלוש סגירות, כל אחת מסוג (Int) -> Int:

  • addX מוסיפה את x לארגומנט שלה
  • square מחזירה את הארגומנט בריבוע
  • negate מחזירה את הארגומנט עם סימן הפוך

החל כל סגירה על כל איבר ברשימה באמצעות map. הדפס שלוש שורות, אחת לכל סגירה, כשהתוצאות מופרדות באמצעות ,:

addX: ...
square: ...
negate: ...

עבור הקלט 10 בשורה 1 ו-1,2,3 בשורה 2, הפלט הוא:

addX: 11,12,13
square: 1,4,9
negate: -1,-2,-3

נסו בעצמכם

let x = Int(readLine()!)!
let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }

// TODO: הגדירו երեք (Int) -> Int փակումներ և կիրառեք յուրաքանչյուրը nums-ի տարրերի վրա
quiz iconבחנו את עצמכם

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

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

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