Swift 函數式

這本書嘗試讓你學會以函數式的方式進行思考。我們認爲 Swift 有着合適的語言特性來適配函 數式的編程方法。然而是什麼使得程序具有函數式特性?又爲何要一開始就學習關於函數式的 內容呢?
很難給出函數式的準確定義 — 其實同樣地,我們也很難給出面向對象編程,亦或是其它編程範 式的準確定義。因此,我們會盡量把重點放在我們認爲設計良好的 Swift 函數式程序應該具有 的一些特質上:
→ 模塊化:相較於把程序認爲是一系列賦值和方法調用,函數式開發者更傾向於強調每個 程序都能夠被反覆分解爲越來越小的模塊單元,而所有這些塊可以通過函數裝配起來, 以定義一個完整的程序。當然,只有當我們能夠避免在兩個獨立組件之間共享狀態時, 才能將一個大型程序分解爲更小的單元。這引出我們的下一個關注特質。
→ 對可變狀態的謹慎處理:函數式編程有時候(被半開玩笑地)稱爲“面向值編程”。面向 對象編程專注於類和對象的設計,每個類和對象都有它們自己的封裝狀態。然而,函數 式編程強調基於值編程的重要性,這能使我們免受可變狀態或其他一些副作用的困擾。 通過避免可變狀態,函數式程序比其對應的命令式或者面向對象的程序更容易組合。
→ 類型:最後,一個設計良好的函數式程序在使用類型時應該相當謹慎。精心選擇你的數 據和函數的類型,將會有助於構建你的代碼,這比其他東西都重要。Swift 有一個強大 的類型系統,使用得當的話,它能夠讓你的代碼更加安全和健壯。
我們認爲這些特質是 Swift 程序員可能從函數式編程社區學習到的精華點。在這本書中,我們 將通過許多實例和學習案例說明以上幾點。
根據我們的經驗,學習用函數式的方式思考並不容易。它挑戰了我們既有的熟練解決問題的方 式。對於習慣寫 for 循環的程序員來說,遞歸可能讓我們倍感迷惑;賦值語句和全局狀態的缺 失讓我們寸步難行;更不用提閉包,泛型,高階函數和單子 (Monad),這些東西簡直讓人痛不 欲生。
在這本書中,我們假定你以前有過 Objective-C (或其他一些面向對象的語言) 的編程經驗。書 中不會涵蓋 Swift 的基礎知識,或是教你創建你的第一個 Xcode 工程,但我們會嘗試在適當的 時候引用現有的 Apple 文檔。你應當能自如地閱讀 Swift 程序,並且熟悉常⻅的編程概念,如 類,方法和變量等。如果你剛剛開始學習編程,這本書可能並不適合你。
在這本書中,我們希望讓函數式編程易於理解,並消除人們對它的一些偏⻅。使用這些理念去 改善你的代碼並不需要你擁有數學的博士學位!函數式編程並不是 Swift 編程的唯一方式。但
是我們相信學習函數式編程會爲你的工具箱添加一件重要的新工具,不論你使用那種語言,這
件工具都會讓你成爲一個更好的開發者。

百度網盤
鏈接:https://pan.baidu.com/s/1eprygKS0rE4-uzXEDFNezw 密碼:aypi

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章