国产gaysexchina男同gay,japanrcep老熟妇乱子伦视频,吃奶呻吟打开双腿做受动态图,成人色网站,国产av一区二区三区最新精品

IOS高階折疊如何使用?

2020-07-24 14:42 更新

Flod 是一個(gè)比較有意思的高階函數(shù),它能夠把列表中的所有元素變成一個(gè)值。通常我們會(huì)使用一個(gè)簡(jiǎn)單的高階折疊來(lái)對(duì)數(shù)值數(shù)組進(jìn)行求和操作。

NSNumber * sum = [array rx_foldWithBlock:^ id (id memo , id each){
    return @([memo integerValue] + [each integerValue]);
}];

輸出的值為@6.數(shù)組中的每一個(gè)元素按順序執(zhí)行上述合并規(guī)則:[memo integerValue] + [each integerValue],其中memo參數(shù)紀(jì)錄的是上一次合并后的結(jié)果,其初始值為零。這還不是很有趣,有趣的是我們還能給memo(這個(gè)參數(shù)的泛稱)賦初始值:

[[array rx_mapWithBlock:^id (id each){
        return [each stringValue];
    }] rx_foldInitialValue:@"" block:^id (id memo , id each){
        return [memo stringByAppendingString:each];
}];

代碼的結(jié)果:@“123”. 我們來(lái)分析一下這是怎么做到的. 首先我們對(duì)數(shù)組中的所有NSNumber對(duì)象做了映射,把他們變成了NSString對(duì)象,然后我們實(shí)現(xiàn)了一個(gè)高階折疊,并給了memo變量一個(gè)空字符串。

在沒(méi)有RXCollections的情況下能得到這樣的結(jié)果嗎?當(dāng)然可以。但這是一個(gè)明確的"是什么,而不是如何"的解決問(wèn)題的方法。這種方法可以讓我們不必跟CPU一樣去想"這一步要如何,下一步要如何"類似這樣的事情。寫(xiě)代碼的時(shí)候如此,讀代碼的時(shí)候更是如此(意:更多地關(guān)注任務(wù)是什么,要達(dá)成什么目標(biāo))。


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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)