嗨,大家好,我是 Lacie,您現在收看的是 Swift - 來吧!鐵人三十項 系列的第二七篇
在鐵人賽完結後,為保持持續做筆記的習慣
將會在我的 Medium 繼續撰寫文章,若有興趣者可前往觀看。
針對陣列裡每一個元素做處理,處理後回傳至一個新的陣列
雖然 For-In 也可以做到一樣的事,但使用 Map 搭配 Closure 可以更快達到需求
例如將所有商品價格都打 5 折:
可能在國外用餐,都必須加上一成服務費:
像上集篩選出小於 25 歲的人後,可以使用 map 來僅印出名字:
試著將 1 到 10 的陣列數字使用 reduce 加總:
也可以像這樣簡化:
reduce 也可以作用在字典,假設買三種麵包,每種麵包買的數量和價格都不同,可以先計算每種麵包乘出來總共是多少錢,再將它們加總:
假設有一個陣列是用來存取年齡的,但有時你沒辦法預期使用者會用哪種方式來輸入奇奇怪怪的東西,若只想得到「正確的年齡」,可以使用 compactMap 來處理:
flatMap 可以將陣列中的 nil 移除掉(但若返回的值為 Optional,則系統建議使用 compactMap):
flatMap 也可以將多維陣列化為一維陣列:
以上介紹這些高階函式主要就是用來快速達到自己的需求、簡化複雜的寫法,由於僅初步認識可能有哪些用法,未深入研究,待之後碰到實際的案例後再來補充。
在Swift 4.1 之前flatMap有濾掉nil跟降維的功用 但為了更精準使用才把濾掉nil拆出來變compactMap 但為了怕之前使用者出問題所以flatMap濾掉nil的功能"暫時"先保留