欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

swift 常用高階函數(shù)分享

 更新時(shí)間:2017年12月08日 08:47:48   作者:胡曦然  
Swift是一門面向協(xié)議的語言,在使用Swift時(shí)我們已經(jīng)充分享受到了面向協(xié)議編程帶給我們的便利,但是Swift相比Obj-C還有一個(gè)更重要的優(yōu)點(diǎn),那就是對(duì)函數(shù)式編程提供了很好的支持,其中Swift提供了map,filter,reduce這三個(gè)高階函數(shù)Higher Order function作為對(duì)容器的支持

map

var arr = [1, 2, 3]
//map函數(shù)是有返回值的,想要arr里面的值map過去需要arr重新接收新值
arr.map { (a : Int) -> Int in
  return a * 2
}
//這種寫法只是尾隨閉包的簡(jiǎn)寫。。
arr = arr.map {
  $0 * 2
}

flatMap

//floatMap函數(shù)可以降維
var arr1 = [[1, 2], [4, 5], [6, 7]]
var aaa = arr1.flatMap {
  $0
}
//floatMap函數(shù)去空作用,還會(huì)解包數(shù)據(jù)
var arr2 = ["swift", nil, "java"]

var bbb = arr2.flatMap {
  $0
}

filter

//filter 函數(shù)用作對(duì)容器內(nèi)元素進(jìn)行篩選
var arr3 = ["swift", "java", "oc", "python"]
arr3 = arr3.filter {
  guard $0.characters.count > 2 else {
    return false
  }
  return true
}

reduce

//reduce 函數(shù)用作對(duì)容器內(nèi)元素進(jìn)行操作,將元素字符串拼接
var arr4 = [2, 3, 4, 5]
//arr4.reduce("", {
//  return $0 == "" ? String($1) : $0 + String($1)
//})
//用reduce求和
arr4.reduce(0) {
  return $0 + $1
}
// 將數(shù)組中的每個(gè)字符串用‘,'拼接
let arr5 = ["Objective-C", "Swift", "HTML", "CSS", "JavaScript"]

// $0表示計(jì)算后的結(jié)果, $1表示數(shù)組中的每一個(gè)元素
arr5.reduce("", {
  return $0 == "" ? $1 : $0 + "," + $1
})

所以,Swift 語言的高階函數(shù)以及閉包可以 capture 外部變量的特性,使得代碼邏輯可以以函數(shù)作為主體來進(jìn)行封裝,這將使得我們的代碼組織更加靈活。

當(dāng)然,如果濫用,這也會(huì)造成代碼組織變得更加混亂。

相關(guān)文章

  • iOS中使用UIDatePicker制作時(shí)間選擇器的實(shí)例教程

    iOS中使用UIDatePicker制作時(shí)間選擇器的實(shí)例教程

    這篇文章主要介紹了iOS中使用UIDatePicker制作時(shí)間選擇器的實(shí)例教程,實(shí)例中未選中的時(shí)間項(xiàng)目會(huì)講解一個(gè)將其變透明的方法,非常給力,需要的朋友可以參考下
    2016-05-05
  • 關(guān)于ios配置微信config出現(xiàn)驗(yàn)簽失敗的問題解決

    關(guān)于ios配置微信config出現(xiàn)驗(yàn)簽失敗的問題解決

    這篇文章主要介紹了關(guān)于ios配置微信config出現(xiàn)驗(yàn)簽失敗的問題解決方案,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • iOS利用UITableView設(shè)置全屏分隔線的3種方法總結(jié)

    iOS利用UITableView設(shè)置全屏分隔線的3種方法總結(jié)

    這篇文章主要介紹了關(guān)于iOS利用UITableView設(shè)置全屏分隔線的幾種方法的相關(guān)對(duì)比,分析這三種的各自優(yōu)缺點(diǎn),并且分享了設(shè)置UITableView的單元格分割線離屏幕左右的距離為0的方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起看看吧。
    2017-11-11
  • iOS實(shí)現(xiàn)微信朋友圈視頻截取功能

    iOS實(shí)現(xiàn)微信朋友圈視頻截取功能

    這篇文章主要介紹了iOS實(shí)現(xiàn)微信朋友圈視頻截取功能,微信使用非常普遍,功能也很強(qiáng)大,不知道大家對(duì)微信朋友圈視頻截取功能有沒有了解,下面腳本之家小編給大家?guī)碓斀饨榻B,感興趣的朋友一起看看吧
    2018-07-07
  • iOS實(shí)現(xiàn)3D卡片式輪播效果

    iOS實(shí)現(xiàn)3D卡片式輪播效果

    這篇文章主要為大家詳細(xì)介紹了iOS實(shí)現(xiàn)3D卡片式輪播效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • Mac OSX 打開原生自帶讀寫NTFS功能(圖文)

    Mac OSX 打開原生自帶讀寫NTFS功能(圖文)

    這篇文章主要介紹了Mac OSX 打開原生自帶讀寫NTFS功能(圖文),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • IOS自帶Email的兩種方法實(shí)例詳解

    IOS自帶Email的兩種方法實(shí)例詳解

    這篇文章主要介紹了IOS自帶Email的兩種方法實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • iOS自帶動(dòng)畫效果的實(shí)例代碼

    iOS自帶動(dòng)畫效果的實(shí)例代碼

    本文給大家分享ios自帶動(dòng)畫效果的實(shí)現(xiàn)代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2016-12-12
  • 淺析iOS多視圖滑動(dòng)點(diǎn)擊切換的集成

    淺析iOS多視圖滑動(dòng)點(diǎn)擊切換的集成

    本文將大家常常會(huì)用到的多視圖滑動(dòng)點(diǎn)擊切換視圖進(jìn)行封裝,這樣在大家使用的時(shí)候就很方便了,有需要的可以參考學(xué)習(xí),下面一起來看看吧。
    2016-08-08
  • iOS開發(fā)CGContextRef畫圖使用總結(jié)

    iOS開發(fā)CGContextRef畫圖使用總結(jié)

    這篇文章主要為大家詳細(xì)介紹了iOS開發(fā)CGContextRef畫圖使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04

最新評(píng)論