W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
Flod 是一個比較有意思的高階函數(shù),它能夠把列表中的所有元素變成一個值。通常我們會使用一個簡單的高階折疊來對數(shù)值數(shù)組進行求和操作。
NSNumber * sum = [array rx_foldWithBlock:^ id (id memo , id each){
return @([memo integerValue] + [each integerValue]);
}];
輸出的值為@6.數(shù)組中的每一個元素按順序執(zhí)行上述合并規(guī)則:[memo integerValue] + [each integerValue]
,其中memo參數(shù)紀錄的是上一次合并后的結果,其初始值為零。這還不是很有趣,有趣的是我們還能給memo
(這個參數(shù)的泛稱)賦初始值:
[[array rx_mapWithBlock:^id (id each){
return [each stringValue];
}] rx_foldInitialValue:@"" block:^id (id memo , id each){
return [memo stringByAppendingString:each];
}];
代碼的結果:@“123”. 我們來分析一下這是怎么做到的. 首先我們對數(shù)組中的所有NSNumber對象做了映射,把他們變成了NSString對象,然后我們實現(xiàn)了一個高階折疊,并給了memo
變量一個空字符串。
在沒有RXCollections的情況下能得到這樣的結果嗎?當然可以。但這是一個明確的"是什么,而不是如何"的解決問題的方法。這種方法可以讓我們不必跟CPU一樣去想"這一步要如何,下一步要如何"類似這樣的事情。寫代碼的時候如此,讀代碼的時候更是如此(意:更多地關注任務是什么,要達成什么目標)。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: