iOS 什么是函數式編程


前言:當前只做理解性的常規背書,根據不斷深入學習會不斷豐富解讀內容,歡迎評論提意見

函數式編程:Functional Programming

1 基本解釋:

函數式編程 是一種思維模式,一種編程思想,一種編程方式,一種編程范式

2 基本特性:

不使用可變的變量處理 賦值,循環和其他命令式控制結構去編程

       好處:2.1 函數即不依賴外部的狀態也不修改外部的狀態函數調用的結果不依賴調用的時間和空間狀態,這樣寫的代碼容易進行推理,不容易出錯。這使得單元測試和調試都更容易。

      2.2   線程安全:函數式編程可以幫我們解決這一痛點,每一個純函數都是線程安全 

     時間狀態:變量一旦有了狀態,它就有可能隨着時間而發生變化,時間是最不可預知的因素

     空間狀態:如果把一個線程看成一個獨立的空間,在程序的世界當中,空間會產生交叉重疊。一個變量如果可以被兩個線程同時訪問,它的值如果可以在兩個空間發生變化,這個變量同樣變得很危險

3 常規關鍵字

3.1高階函數:參數為函數或返回值為函數的函數  //函數式編程就是指這種高度抽象的編程范式

3.2惰性求值:就是我們常常口語化的“懶加載”,表達式賦值給變量時,並不會馬上參與計算求值,是當變量被調用時候才會計算。通過按需加載計算提升性能

4感悟:(1)函數式編程並不會減少我們的代碼量,它改變的只是我們書寫代碼的方式

            (2) 編程方式表達更接近於自然語言,調用表達可直譯(對命名准確性要求高),注重結果。

5使用舉例:

OC中

- (void)getLastestYZToken:(void (^)(BOOL isSuccess))callBlock//參數是閉包block 自己在平時的開發中“不小心”就會使用函數式編程思想
{

    callBlock(isSuccess);
 }

 

參考:

1 http://www.cocoachina.com/ios/20161209/18325.html

2 http://blog.csdn.net/qinyuanpei/article/details/54986613

3 https://www.zhihu.com/question/28292740

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM