מיפוי (Map)
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-Swift של Coddy. שיעור 23 מתוך 56.
map מקבלת closure ומחילה אותו על כל איבר, ומחזירה מערך חדש של התוצאות. למערך החדש יש אותו אורך כמו למערך המקור.
let nums = [1, 2, 3, 4]
let doubled = nums.map { $0 * 2 }
print(doubled) // [2, 4, 6, 8]$0 הוא קיצור של הפרמטר הראשון של הסגירה. הצורה הארוכה מפרטת את שם הפרמטר ואת סוג הערך המוחזר:
let doubled = nums.map { (n: Int) -> Int in
return n * 2
}map יכולה גם לשנות את סוג האיברים. העברת [Int] דרך closure שמחזירה String נותנת לך [String]:
let labels = nums.map { "#\($0)" }
print(labels) // ["#1", "#2", "#3", "#4"]אתגר
קלקרא שורת קלט אחת: רשימה של מספרים שלמים המופרדים בפסיקים (טמפרטורות בפרנהייט).
המר כל אחד מהם לצלזיוס באמצעות הנוסחה C = (F - 32) * 5 / 9 בחשבון של מספרים שלמים (עיגול לכיוון אפס, ללא ספרות עשרוניות). הדפס, בשורות נפרדות:
- את הטמפרטורות בצלזיוס, מופרדות באמצעות
, - תווית אחת לכל טמפרטורה, עם הקידומת
F=<f> C=<c>, מופרדות באמצעות;
השתמש ב-map עבור שתי השורות.
עבור הקלט 32,212,98,0, הפלט הוא:
0,100,36,-17
F=32 C=0;F=212 C=100;F=98 C=36;F=0 C=-17נסו בעצמכם
let f = readLine()!.components(separatedBy: ",").map { Int($0)! }
// TODO: שורה 1 = ערכי celsius מחוברים באמצעות ","
// TODO: שורה 2 = תוויות "F=<f> C=<c>" מחוברות באמצעות ";"
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
תרגלו בעצמכם: Swift אונליין