本文是函數(shù)式Swift的讀書筆記,為了備忘(明明學的時候理解了,學完過一段時間就忘了,如果回頭再看看,會有蠻大的收獲,所以寫讀書筆記)
1.函數(shù)式編程的特點:
很難給函數(shù)式編程一個準確的定義,設計良好的Swift函數(shù)式程序具有一些特質(zhì)
- 模塊化:函數(shù)式開發(fā)者更傾向于強調(diào)每個程序都能夠被反復分解為越來越小的模塊單元,而所有這些塊可以通過函數(shù)裝配起來,以定義一個完整的程序
- 對可變狀態(tài)的謹慎處理:函數(shù)式編程有時候 (被半開玩笑地) 稱為“面向值編程”。面向?qū)ο缶幊虒W⒂陬惡蛯ο蟮脑O計,每個類和對象都有它們自己的封裝狀態(tài)。然而,函數(shù)式編程強調(diào)基于值編程的重要性,這能使我們免受可變狀態(tài)或其他一些副作用的困擾。
- 類型: 最后,一個設計良好的函數(shù)式程序在使用類型時應該相當謹慎。精心選擇你的數(shù)據(jù)和函數(shù)的類型
2. 面向?qū)ο?vs 函數(shù)式編程
面向?qū)ο髲娬{(diào)的是將與某數(shù)據(jù)類型相關(guān)的一系列操作都封裝到該數(shù)據(jù)類型中去,因此,在數(shù)據(jù)類型中難免存在大量狀態(tài),以及相關(guān)的行為。雖然這很符合人類的邏輯直覺,但是當類型關(guān)系變得錯綜復雜的時候,類型中狀態(tài)的改變和類型之間彼此的繼承和依賴將使程序的復雜度幾何上升。
避免使用程序狀態(tài)和可變對象,是降低程序復雜度的有效方式之一,而這也正是函數(shù)式編程的精髓。我們先構(gòu)建一系列簡單卻具有一定功能的小函數(shù),然后再將這些函數(shù)進行組裝以實現(xiàn)完整的邏輯和復雜的運算,這是函數(shù)式編程的基本思想。
3. 本書介紹
最純粹的函數(shù)式編程語言是 Haskell,但是國內(nèi)用的人特別少?!癝wift 是一門有著合適的語言特性來適配函數(shù)式編程方法的優(yōu)秀語言”
本書的2-10章介紹函數(shù)式編程的基本概念。
10-12章是進階內(nèi)容。
4. 看書的感謝
感覺像是發(fā)現(xiàn)了新大陸,開始有點難以理解,慢慢發(fā)現(xiàn) 函數(shù)式的編程范式 也不錯。為以后學習RXSwift打基礎(chǔ)。