IOS使用高階函數(shù)進行函數(shù)式編程

2020-07-24 14:41 更新

高階函數(shù)”是函數(shù)式編程中的關(guān)鍵的知識。從維基百科的解釋來看,一個高階函數(shù)應(yīng)該達到以下的兩個要求:

  • 一個或者多個函數(shù)作為輸入。
  • 有且僅有一個函數(shù)輸出。

在Objective-c中我們經(jīng)常使用block作為函數(shù)。我們不需要跋山涉水地去尋找“高階函數(shù)”,實際上,Apple為我們提供的Foundation庫中就有??紤]象下面這么簡單的一個NSNumber 的數(shù)組:

 NSArray * array = @[ @(1), @(2), @(3) ];

我們想要枚舉這個數(shù)組的內(nèi)容,利用數(shù)組元素來做些事情。

我們可以用一個NSArray的高階函數(shù)來代替for循環(huán)。代碼如下:

for (NSNumber *number in array) NSLog(@"%@",number);

。。。這個等同于下面的高階函數(shù):

[array enumerateObjectsUsingBlock:^(NSNumber *number, NSUInteger idx, BOOL *stop)
{
    NSLog(@"%@",number);
}];

"為什么?","這代碼不是更多了嗎?".

好吧,確實是這樣,但這是通往函數(shù)式編程道路上的第一步:函數(shù)的啟蒙教育。就像上一章節(jié)所說的,如何在只關(guān)注任務(wù)本身的前提下去完成任務(wù)?這只是為即將到來的便利付出的一點點代價,相信我。

實際上,高階函數(shù)是很抽象的東西,我們所做的事情(命令式編程)基本上都可以用它來抽象。但Foundation中高階函數(shù)的程度很低,要了解更多,我們不得不借助開源社區(qū)。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號