W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
“高階函數(shù)”是函數(shù)式編程中的關(guān)鍵的知識(shí)。從維基百科的解釋來看,一個(gè)高階函數(shù)應(yīng)該達(dá)到以下的兩個(gè)要求:
在Objective-c中我們經(jīng)常使用block作為函數(shù)。我們不需要跋山涉水地去尋找“高階函數(shù)”,實(shí)際上,Apple為我們提供的Foundation庫(kù)中就有。考慮象下面這么簡(jiǎn)單的一個(gè)NSNumber 的數(shù)組:
NSArray * array = @[ @(1), @(2), @(3) ];
我們想要枚舉這個(gè)數(shù)組的內(nèi)容,利用數(shù)組元素來做些事情。
我們可以用一個(gè)NSArray的高階函數(shù)來代替for循環(huán)。代碼如下:
for (NSNumber *number in array) NSLog(@"%@",number);
。。。這個(gè)等同于下面的高階函數(shù):
[array enumerateObjectsUsingBlock:^(NSNumber *number, NSUInteger idx, BOOL *stop)
{
NSLog(@"%@",number);
}];
"為什么?","這代碼不是更多了嗎?".
好吧,確實(shí)是這樣,但這是通往函數(shù)式編程道路上的第一步:函數(shù)的啟蒙教育。就像上一章節(jié)所說的,如何在只關(guān)注任務(wù)本身的前提下去完成任務(wù)?這只是為即將到來的便利付出的一點(diǎn)點(diǎn)代價(jià),相信我。
實(shí)際上,高階函數(shù)是很抽象的東西,我們所做的事情(命令式編程)基本上都可以用它來抽象。但Foundation中高階函數(shù)的程度很低,要了解更多,我們不得不借助開源社區(qū)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: