[swift]閉包的簡寫

一、閉包的完整格式

   {(parameters) -> return type in    // 閉包的類型描述
       statements                     // 閉包體
   }

二、 閉包簡寫的幾個依據(jù)

1.閉包可更具上下文推斷參數(shù)和返回值的類型

  • 如果閉包沒有參數(shù),那么in和之前的描述可以省略瘤袖。

2.從單行表達(dá)式閉包中隱式返回(也就是閉包體只有一行代碼,可以省略return)

3.可以簡化閉包的參數(shù)名昂验,如$0,$1(從0開始捂敌,表示第i個參數(shù)...)

  • 結(jié)合第一點艾扮,就是即使閉包有參數(shù),使用簡化參數(shù)名占婉,那么in和之前的描述可以省略泡嘴。

4.提供尾隨閉包語法(Trailing closure syntax)

  • 4.1如果傳入的參數(shù),最后一個參數(shù)是閉包锐涯,那么可以把閉包放在()外面
  • 4.2如果傳入的參數(shù)只有一個磕诊,且是一個閉包,那么這個()可以省略

三纹腌、結(jié)合具體案例分析

  • 1.sort函數(shù)(排序函數(shù))
let names = ["g","b","a", "c", "d", "f"]

// 傳入閉包(完整寫法)
names.sort({ (num1, num2) -> Bool in
    return num1 > num2
})

// 簡寫1 (依據(jù)上面第4點)
// 4.1
names.sort(){ (num1, num2) -> Bool in
    return num1 > num2
}
// 4.2
names.sort{ (num1, num2) -> Bool in
    return num1 > num2
}

// 簡寫1(依據(jù)上面第2.4點)
names.sort{ (num1, num2) -> Bool in
    num1 > num2
}

// 簡寫2(依據(jù)上面第1.3.4點)
names.sort{ return $0 > $1 }

// 簡寫3(依據(jù)上面的1.2.3.4點)
names.sort{ $0 > $1 }

// 簡寫4(這不屬于閉包的簡寫,是sort函數(shù)的簡寫)
names.sort(>)
names.sort(<)
names.sort()     // 排序函數(shù)(默認(rèn)從小到大)

2.reduce函數(shù) (歸整函數(shù))

var numbers = [1, 2, 3]
// numbers.reduce(initial: T, combine: (T, Int) throws -> T)
// 傳入了兩個參數(shù)滞磺,最后一個參數(shù)是一個閉包
// 完整的寫法
let result = numbers.reduce( 10 , { (sum, elemt) -> Int in
   return sum + elemt
})

// 簡寫1(依據(jù)上面的第4點)
let result01 = numbers.reduce(10) { (sum, elemt) -> Int in
    return sum + elemt
}
// 最終簡寫 (依據(jù)上面的1.2.3.4點)
let result02 = numbers.reduce(10) {$0 + $1}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末升薯,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子击困,更是在濱河造成了極大的恐慌涎劈,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件阅茶,死亡現(xiàn)場離奇詭異蛛枚,居然都是意外死亡,警方通過查閱死者的電腦和手機脸哀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進(jìn)店門蹦浦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人撞蜂,你說我怎么就攤上這事盲镶。” “怎么了蝌诡?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵溉贿,是天一觀的道長。 經(jīng)常有香客問我浦旱,道長宇色,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任颁湖,我火速辦了婚禮宣蠕,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘爷狈。我一直安慰自己植影,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布涎永。 她就那樣靜靜地躺著思币,像睡著了一般鹿响。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谷饿,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天惶我,我揣著相機與錄音,去河邊找鬼博投。 笑死绸贡,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的毅哗。 我是一名探鬼主播听怕,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼哟冬,長吁一口氣:“原來是場噩夢啊……” “哼宾抓!你這毒婦竟也來了谬盐?” 一聲冷哼從身側(cè)響起怜俐,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤平斩,失蹤者是張志新(化名)和其女友劉穎力喷,沒想到半個月后家卖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寿谴,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡捕发,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年疏旨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扎酷。...
    茶點故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡檐涝,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出霞玄,到底是詐尸還是另有隱情骤铃,我是刑警寧澤,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布坷剧,位于F島的核電站惰爬,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏惫企。R本人自食惡果不足惜撕瞧,卻給世界環(huán)境...
    茶點故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望狞尔。 院中可真熱鬧丛版,春花似錦、人聲如沸偏序。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽研儒。三九已至豫缨,卻和暖如春独令,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背好芭。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工燃箭, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人舍败。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓招狸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親邻薯。 傳聞我的和親對象是個殘疾皇子裙戏,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,455評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 本章將會介紹 閉包表達(dá)式尾隨閉包值捕獲閉包是引用類型逃逸閉包自動閉包枚舉語法使用Switch語句匹配枚舉值關(guān)聯(lián)值原...
    寒橋閱讀 1,562評論 0 3
  • 閉包是自包含的函數(shù)代碼塊挽懦,可以在代碼中被傳遞和使用。Swift 中的閉包與 C 和 Objective-C 中的代...
    窮人家的孩紙閱讀 1,713評論 1 5
  • 86.復(fù)合 Cases 共享相同代碼塊的多個switch 分支 分支可以合并, 寫在分支后用逗號分開木人。如果任何模式...
    無灃閱讀 1,377評論 1 5
  • “垃圾游戲毀我青春”醒第,一句常聽的話。 毀掉我們青春的只有游戲而已进鸠?目前大二稠曼,和身邊的人一樣,正值青春年少過著最美好...
    楊向昜閱讀 974評論 1 2
  • 今日體驗: 今天5點起床比原計劃早起了1個半小時客年,聽了半小時書霞幅,看了1小時的書,7:09分出門去菜市場給爸媽買早餐...
    劉詩嫻閱讀 119評論 0 0