יסודות הסגירות
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Swift של Coddy. שיעור 38 מתוך 56.
סגירה היא בלוק קוד עצמאי שאפשר להעביר ממקום למקום ולקרוא לו מאוחר יותר. התחביר המלא מציין את סוגי הפרמטרים והערך המוחזר:
let double = { (n: Int) -> Int in
return n * 2
}
print(double(5)) // 10Swift יכולה להסיק את הטיפוסים כשההקשר ברור, ולכן לעיתים רחוקות כותבים את הצורה הארוכה. בתוך map, filter וכו׳, הצורה המקוצרת היא המקובלת:
let nums = [1, 2, 3, 4]
let doubled = nums.map { n in n * 2 }
let alsoDoubled = nums.map { $0 * 2 } // הקצר ביותר, $0 הוא הארגומנט הראשוןסגירות הן ערכים; אפשר לאחסן אותן במשתנים, להחזיר אותן מפונקציות ולהעביר אותן כארגומנטים. זו הסיבה לכך ש־map עובד.
אתגר
קלקרא שתי שורות קלט:
- מספר שלם
x - רשימה של מספרים שלמים המופרדים בפסיקים
הגדר שלוש סגירות, כל אחת מסוג (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-ի տարրերի վրա
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
5פונקציות מסדר גבוה חלק 1
מיפוי (Map)סינון (Filter)צמצום (Reduce)שרשור map, filter ו-reduceסיכום – סטטיסטיקות מיליםתרגלו בעצמכם: Swift אונליין