Menu
Coddy logo textTech

compactMap

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

compactMap היא map עם סינון של הערכים האופציונליים. הסגירה יכולה להחזיר Optional; ‏compactMap מסירה את התוצאות שהן nil ומחלצת את הערכים מהשאר.

let strings = ["3", "hi", "7", "!", "1"]
let numbers = strings.compactMap { Int($0) }
print(numbers)               // [3, 7, 1]

Int("hi") מחזירה nil כי היא לא יכולה לנתח מספר מתוך "hi". compactMap מסירה אותם אוטומטית ונותנת לך [Int] נקי.

בלעדיה, היית כותב strings.map { Int($0) } ומקבל [Int?] עם ערכי nil מעורבים, ואז היית צריך לסנן אותם בעצמך. compactMap עושה את שני השלבים בפעולה אחת.

challenge icon

אתגר

קל

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

הדפס:

  1. את המספרים השלמים (לפי סדר הקלט), כשהם מחוברים באמצעות ,
  2. כמה ערכים הושמטו (לא ניתן היה לנתח אותם)
  3. סכום המספרים השלמים שנותחו

עבור הקלט 3,hi,7,!,1,42,oops, הפלט הוא:

3,7,1,42
3
53

נסו בעצמכם

let parts = readLine()!.components(separatedBy: ",")

// TODO: להמיר ל-ints באמצעות compactMap; להדפיס את הערכים המחוברים, את מספר הערכים שהושמטו ואת הסכום
quiz iconבחנו את עצמכם

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

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

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