Menu
Coddy logo textTech

מיפוי (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"]
challenge icon

אתגר

קל

קרא שורת קלט אחת: רשימה של מספרים שלמים המופרדים בפסיקים (טמפרטורות בפרנהייט).

המר כל אחד מהם לצלזיוס באמצעות הנוסחה C = (F - 32) * 5 / 9 בחשבון של מספרים שלמים (עיגול לכיוון אפס, ללא ספרות עשרוניות). הדפס, בשורות נפרדות:

  1. את הטמפרטורות בצלזיוס, מופרדות באמצעות ,
  2. תווית אחת לכל טמפרטורה, עם הקידומת 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>" מחוברות באמצעות ";"
quiz iconבחנו את עצמכם

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

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

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