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 עושה את שני השלבים בפעולה אחת.
אתגר
קלקרא שורת קלט אחת: שילוב מופרד בפסיקים של מספרים שלמים וטקסט לא תקין (חלק מהערכים אינם ניתנים לניתוח).
הדפס:
- את המספרים השלמים (לפי סדר הקלט), כשהם מחוברים באמצעות
, - כמה ערכים הושמטו (לא ניתן היה לנתח אותם)
- סכום המספרים השלמים שנותחו
עבור הקלט 3,hi,7,!,1,42,oops, הפלט הוא:
3,7,1,42
3
53נסו בעצמכם
let parts = readLine()!.components(separatedBy: ",")
// TODO: להמיר ל-ints באמצעות compactMap; להדפיס את הערכים המחוברים, את מספר הערכים שהושמטו ואת הסכום
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
5פונקציות מסדר גבוה חלק 1
מיפוי (Map)סינון (Filter)צמצום (Reduce)שרשור map, filter ו-reduceסיכום – סטטיסטיקות מיליםתרגלו בעצמכם: Swift אונליין