最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Swift?reduce函數(shù)使用示例詳解

 更新時(shí)間:2023年07月07日 10:36:36   作者:大劉  
這篇文章主要為大家介紹了Swift?reduce函數(shù)使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

reduce

Swift中數(shù)組的reduce方法用于做序列元素的累加,如數(shù)組元素的累加, 函數(shù)原型:

@inlinable 
public func reduce<Result>(
    _ initialResult: Result, 
    _ nextPartialResult: (Result, Element) throws -> Result) rethrows -> Result

參數(shù)

  • initialResult: 初始值, The value to use as the initial accumulating value. initialResult is passed to nextPartialResult the first time the closure is executed.
  • nextPartialResult: 下一次累加的基準(zhǔn)值

示例

var arr = [1, 2, 3, 4, 5, 6, 7, 8]
/// initialResult: Result 初始值;
/// nextPartialResult:(Result, Int) 下一輪計(jì)算值, Result = initialResult + Int
/// Result是每輪計(jì)算的返回值(結(jié)果), Int 是數(shù)組元素
/// -&gt; Result 返回值
/// `arr.reduce(initialResult: Result, nextPartialResult: (Result, Int) throws -&gt; Result(Result, Int) throws -&gt; Result&gt;)`
var sum = arr.reduce(100) { partialResult, value in
    print("\(value) --&gt; \(partialResult)")
    return partialResult + value // return 可省略
}
// 初始值是100,第一步就是:
// 100 + 1
// 再把2加上 --&gt; 100 + 1 + 2
// 再把3加上 --&gt; 100 + 1 + 2 + 3
// ...
print(sum) // 136

當(dāng)然,也有好吃的語(yǔ)法糖,效果是一樣的:

sum = arr.reduce(100) {
    $0 + $1
}
print(sum)

reduce(into:)

reduce(into:)方法也是一個(gè)實(shí)用方法,主要作用是遍歷數(shù)組中的元素,把它們into到另一個(gè)對(duì)象中,示例:

如下有一個(gè)數(shù)組,把偶數(shù)放一個(gè)數(shù)組中,把奇數(shù)放一個(gè)數(shù)組中:

let nums = [1,2,3,4,5]
let result = nums.reduce(into: [[],[]]) { arr, num in
    arr[num%2].append(num)
}
print(result[0]) // [2, 4]
print(result[1]) // [1, 3, 5]

這里into:后面的[[], []]是一個(gè)二級(jí)數(shù)組,這個(gè)二維數(shù)組即閉包中的arr, 而閉包中的num是nums數(shù)組中每一個(gè)值,遍歷后把這個(gè)二維數(shù)組返回 (由函數(shù)原型的inout可知,返回的其實(shí)就是into:參數(shù),本例中即二維數(shù)組)

func reduce<Result>(into: Result, 
_ updateAccumulatingResult: (inout Result, Element) 
throws -> ()
) 
-> Result

為了更方例理解,展開(kāi)為:

temp[1].append(1) //1%2 = 1/2 left 1 [[][1]]
temp[0].append(2) //2%2 = 2/2 left 0 [[2][1]]
temp[1].append(3) //3%2 = 3/2 = 1 left 1 [[2][1,3]]
temp[0].append(4) //4%2 = 4/2 left 0 [[2,4][1,3]]
temp[1].append(5) //5%2 = 5/2 = 2 left 1 [[2,4][1,3,5]]

示例參考:https://stackoverflow.com/questions/62103658/how-do-you-use-reduceinto-in-swift

再來(lái)看一個(gè)示例:

// 統(tǒng)計(jì)下面的字符串中每個(gè)字符的使用次數(shù)
let letters = "abracadabra"
let letterCount = letters.reduce(into: [:]) { counts, letter in
    counts[letter, default: 0] += 1
}
print(letterCount) // ["a": 5, "r": 2, "c": 1, "b": 2, "d": 1]

其實(shí)就是遍歷字符串,然后把它們into到字典[:]中

還有個(gè)示例:http://www.fzitv.net/article/279000.htm說(shuō)的比較好直接粘過(guò)來(lái):

struct Person {
    enum Gender {
        case male
        case female
    }
    var name = ""
    var age = 0
    var gender = Gender.female
}
let dataSource = [Person(name: "雞大寶", age: 38, gender: .male),
                  Person(name: "江主任", age: 50, gender: .female),
                  Person(name: "可樂(lè)", age: 10, gender: .female),
                  Person(name: "伍六七", age: 16, gender: .male),
                  Person(name: "梅花十三", age: 20, gender: .female)]
// 獲取數(shù)據(jù)源中男女各多少人
let genderCount = dataSource.reduce(into: [Person.Gender: Int]()) { result, person in
    result[person.gender, default: 0] += 1
}
let maleCount = genderCount[Person.Gender.male] // 2
let femaleCount = genderCount[Person.Gender.female] // 3
print(maleCount ?? 0) // 2
print(femaleCount ?? 0) // 3

通過(guò)這些示例,再不懂,中午就不要吃飯了

以上就是Swift reduce函數(shù)使用示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Swift reduce函數(shù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Swift實(shí)現(xiàn)3D輪播圖效果

    Swift實(shí)現(xiàn)3D輪播圖效果

    這篇文章主要為大家詳細(xì)介紹了Swift實(shí)現(xiàn)3D輪播圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • swift自定義表格控件(UITableView)

    swift自定義表格控件(UITableView)

    這篇文章主要為大家詳細(xì)介紹了swift自定義表格控件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • swift實(shí)現(xiàn)顏色漸變以及轉(zhuǎn)換動(dòng)畫(huà)

    swift實(shí)現(xiàn)顏色漸變以及轉(zhuǎn)換動(dòng)畫(huà)

    這篇文章主要為大家詳細(xì)介紹了swift實(shí)現(xiàn)顏色漸變以及轉(zhuǎn)換動(dòng)畫(huà),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Swift UILable 設(shè)置內(nèi)邊距實(shí)例代碼

    Swift UILable 設(shè)置內(nèi)邊距實(shí)例代碼

    本文主要介紹Swift UILable 設(shè)置內(nèi)邊距,這里提供示例代碼供大家參考,有需要的小伙伴可以看下
    2016-07-07
  • 在Swift中使用KVO的細(xì)節(jié)以及內(nèi)部實(shí)現(xiàn)解析(推薦)

    在Swift中使用KVO的細(xì)節(jié)以及內(nèi)部實(shí)現(xiàn)解析(推薦)

    這篇文章主要介紹了在Swift中使用KVO的細(xì)節(jié)以及內(nèi)部實(shí)現(xiàn)解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Swift能代替Objective-C嗎?

    Swift能代替Objective-C嗎?

    這是我在網(wǎng)上上看到的答案,復(fù)制粘貼過(guò)來(lái)和大家分享一下,因?yàn)槲液秃芏嗳艘粯雍荜P(guān)心Swift的出現(xiàn)對(duì)Mac開(kāi)發(fā)的影響和對(duì)Objective-C的影響。
    2014-09-09
  • Swift超詳細(xì)講解指針

    Swift超詳細(xì)講解指針

    從傳統(tǒng)的C代碼和與之無(wú)縫配合的Objective-C代碼遷移到Swift并非小工程,我們的代碼庫(kù)肯定會(huì)時(shí)不時(shí)出現(xiàn)一些和C協(xié)作的地方,如果想要繼續(xù)使用那些C?API的話,了解一些基本的Swift指針操作和使用的知識(shí)會(huì)很有幫助。下面通過(guò)這篇文章一起來(lái)學(xué)習(xí)下吧。
    2022-08-08
  • swift4更新中所遇到的一些問(wèn)題總結(jié)

    swift4更新中所遇到的一些問(wèn)題總結(jié)

    這篇文章主要給大家介紹了關(guān)于在swift4更新中所遇到的一些問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • RxSwift實(shí)現(xiàn)替換delegate的方法示例

    RxSwift實(shí)現(xiàn)替換delegate的方法示例

    這篇文章主要給大家介紹了關(guān)于RxSwift實(shí)現(xiàn)替換delegate的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用RxSwift具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Swift 3.0將UILabel數(shù)字顏色設(shè)置為紅色的方法

    Swift 3.0將UILabel數(shù)字顏色設(shè)置為紅色的方法

    這篇文章主要介紹了關(guān)于在Swift中將UILabel數(shù)字顏色設(shè)置為紅色的方法,文中給出了詳細(xì)的示例代碼,相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-03-03

最新評(píng)論

临夏市| 渝中区| 宕昌县| 八宿县| 嘉荫县| 从江县| 衡水市| 兴宁市| 金湖县| 鄱阳县| 丰都县| 甘洛县| 聂拉木县| 瓦房店市| 友谊县| 探索| 浑源县| 阜宁县| 河南省| 开封县| 闻喜县| 澄江县| 休宁县| 黄浦区| 灵台县| 蓬安县| 曲沃县| 渝北区| 安国市| 山东省| 北京市| 云和县| 苍梧县| 敦煌市| 弋阳县| 合作市| 垣曲县| 宜春市| 尖扎县| 白城市| 焦作市|