Swift 什麼時候不適合使用函式式方法

2021-08-17 15:50:07 字數 991 閱讀 5468

昨天,我在**庫中找到一段我所認為的極具 swift 風格的**。

var minionimages = [

uiimage]()

for i

in1...

7 }

這真是使用函式式程式設計進行重構的絕佳機會,哦吼吼!我可以做函式式程式設計了!!!是的,我非常激動。

那麼,明顯的解決方案是在這兒使用 map:

1...

7). map

我對自己感到很滿意,這段**只有一行。但這樣做無法滿足之前的乙個必要條件 - 我需要[uiimage]陣列,但是這段**返回的是可選型別[uiimage?]陣列。

所以我 google 了下,為了得到非可選型別的uiimages陣列,可以使用如下方法:

let minionimagesfiltered = (

1...

7). map

. filter

. map

這樣的確有用,但是我並不開森。這段**又長又拙笨,而且我討厭強制解包可選型別,雖然這裡不會出錯。不過這都是小事,主要的原因是這樣看起來並不像原生for迴圈那樣簡單有效。

twitter

上指出,可以在這裡使用 swift 2.0 的flatmap,我進行了修改:

let minionimagesflattened = (

1...

7).flatmap

在這裡,我不得不誠實的說,每次看到flatmap時,我都無法完全理解它做了什麼或是怎麼做的。它並不像map以及filter那樣自然。我不懂它在這兒是怎麼做的,所以必須要去搜尋一下。

由此,我再次得出結論:使用flatmap北大青鳥

為什麼我不適合學程式設計?

為什麼我不適合學程式設計?活動 內容 faq 我喜歡靠自己的努力來解決問題。也許是因為在學校裡,沒有養成好的集體活動的習慣。也許是因為我這個家庭最小的孩子想在這個大家族中證明什麼東西。不管是什麼吧,每當我有什麼事情需要完成時,我都會自己去構思,計畫,研究,學習相關技能,然後付諸行動。自從記事兒起我就...

為什麼 Archlinux 不適合伺服器使用

寫在前面 我使用 archlinux 已經快三年了,而且最近兩年中它已經是我的主系統,工作 娛樂都是用它完成的,windows 只是用來刷刷 bios 我個人還是很喜歡 archlinux 的 kiss 哲學的,軟體包時刻跟隨上游並且保持原汁原味,滾動更新隨時體驗新特性,最喜歡的大概還是 arch ...

什麼時候使用儲存過程比較適合?

當乙個事務涉及到多個 sql語句時或者涉及到對多個表的操作時就要考慮用儲存過程 當在乙個事務的完成需要很複雜的商業邏輯時 比如,對多個資料的操作,對多個狀態的判斷更改等 要考慮 還有就是比較複雜的統計和彙總也要考慮,但是過多的使用儲存過程會降低系統的移植性。為了系統的控制方便,例如當系統進行調整時,...