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

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

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

map

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

flatMap

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

var bbb = arr2.flatMap {
  $0
}

filter

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

reduce

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

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

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

當然,如果濫用,這也會造成代碼組織變得更加混亂。

相關(guān)文章

  • 使用AVFoundation實現(xiàn)視頻錄制詳解

    使用AVFoundation實現(xiàn)視頻錄制詳解

    這篇文章主要介紹了使用AVFoundation實現(xiàn)視頻錄制詳解的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • Xcode 9下適配iPhoneX導致iOS 10不兼容問題的解決方法

    Xcode 9下適配iPhoneX導致iOS 10不兼容問題的解決方法

    這篇文章主要給大家介紹了關(guān)于Xcode 9下適配iPhoneX導致iOS 10不兼容問題的解決方法,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2018-04-04
  • iOS仿郵箱大師的九宮格手勢密碼解鎖

    iOS仿郵箱大師的九宮格手勢密碼解鎖

    這篇文章主要為大家詳細介紹了iOS仿郵箱大師的手勢密碼解鎖的相關(guān)資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-04-04
  • 匯總ios開發(fā)逆向傳值的方法

    匯總ios開發(fā)逆向傳值的方法

    這篇文章主要為大家匯總了ios開發(fā)逆向傳值的方法,感興趣的小伙伴們可以參考一下
    2016-03-03
  • iOS App開發(fā)中的UIStackView堆疊視圖使用教程

    iOS App開發(fā)中的UIStackView堆疊視圖使用教程

    UIStackView是iOS9以來新增加的組件,使我們能夠?qū)IView子類對象進行靈活排版,這里我們就來看一下iOS App開發(fā)中的UIStackView堆疊視圖使用教程
    2016-07-07
  • iOS實現(xiàn)抽屜效果

    iOS實現(xiàn)抽屜效果

    這篇文章主要為大家詳細介紹了iOS實現(xiàn)抽屜效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • iOS 設(shè)置UILabel的行間距并自適應高度的方法

    iOS 設(shè)置UILabel的行間距并自適應高度的方法

    下面小編就為大家?guī)硪黄猧OS 設(shè)置UILabel的行間距并自適應高度的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • iOS實現(xiàn)類似格瓦拉電影的轉(zhuǎn)場動畫

    iOS實現(xiàn)類似格瓦拉電影的轉(zhuǎn)場動畫

    這篇文章主要給大家介紹了利用iOS如何實現(xiàn)類似格瓦拉電影的轉(zhuǎn)場動畫,文中給出了詳細步驟實現(xiàn)代碼,對大家的學習和理解很有幫助,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-11-11
  • iOS UITableView 拖動排序?qū)崿F(xiàn)代碼

    iOS UITableView 拖動排序?qū)崿F(xiàn)代碼

    這篇文章主要為大家詳細介紹了iOS UITableView 拖動排序?qū)崿F(xiàn)代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Swift 開發(fā)之懶加載的實例詳解

    Swift 開發(fā)之懶加載的實例詳解

    這篇文章主要介紹了Swift 開發(fā)之懶加載的實例詳解的相關(guān)資料,希望通過本文能幫助到大家,實現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-09-09

最新評論

湘阴县| 安新县| 绩溪县| 芮城县| 卫辉市| 黔东| 淮北市| 汉阴县| 乌拉特后旗| 乌拉特前旗| 永川市| 彰化县| 准格尔旗| 集安市| 古交市| 太保市| 福贡县| 贡觉县| 绥江县| 绵阳市| 当阳市| 乌审旗| 潼关县| 莒南县| 安达市| 大同县| 晋宁县| 四川省| 乌审旗| 理塘县| 即墨市| 高阳县| 阳东县| 海兴县| 汤阴县| 平定县| 柳州市| 克拉玛依市| 阳高县| 石城县| 同仁县|