swift block

在 Swift 中惹悄,閉包可以用于以下幾種場景:

  1. 作為函數(shù)參數(shù)
    閉包可以作為函數(shù)的參數(shù)傳遞,類似于 Objective-C 中的 block。這種用法可以讓函數(shù)更加靈活胁塞,可以根據(jù)需求傳入不同的閉包來處理數(shù)據(jù)。
    例如逗扒,下面的函數(shù)接收一個 Int 類型的參數(shù)和一個閉包參數(shù),將閉包應(yīng)用到參數(shù)上并返回結(jié)果:
func applyOperation(_ operation: (Int) -> Int, to number: Int) -> Int {
    return operation(number)
}

可以將不同的閉包傳入該函數(shù),例如:

let square: (Int) -> Int = { (number: Int) -> Int in
    return number * number
}
let cube: (Int) -> Int = { (number: Int) -> Int in
    return number * number * number
}
let result1 = applyOperation(square, to: 5) // 返回 25
let result2 = applyOperation(cube, to: 5) // 返回 125
  1. 作為變量或常量
    閉包也可以作為變量或常量使用吁伺。這種用法可以讓代碼更加簡潔,避免定義過多的函數(shù)租谈。
    例如篮奄,下面的代碼定義了一個閉包變量,該閉包接收一個 Int 類型的參數(shù)并返回它的平方:
let square: (Int) -> Int = { (number: Int) -> Int in
    return number * number
}

在 Swift 中割去,閉包可以作為變量或常量使用窟却,即使它沒有返回值。這種用法通常用于處理異步操作或者回調(diào)函數(shù)呻逆。
例如夸赫,下面的代碼定義了一個閉包變量,該閉包接收一個 String 類型的參數(shù)并打印該參數(shù):

let printString: (String) -> Void = { (string: String) in
    print(string)
}

可以直接調(diào)用該閉包變量來計算數(shù)值的平方:

let result = square(5) // 返回 25
  1. 作為返回值
    閉包也可以作為函數(shù)的返回值页慷,這種用法可以讓函數(shù)更加靈活憔足,返回不同的閉包來處理數(shù)據(jù)。
    例如酒繁,下面的函數(shù)返回一個閉包滓彰,該閉包接收一個 Int 類型的參數(shù)并返回它的平方:
func makeSquare() -> (Int) -> Int {
    return { (number: Int) -> Int in
        return number * number
    }
}

可以調(diào)用該函數(shù)獲取一個閉包,并直接調(diào)用該閉包來計算數(shù)值的平方:

let square = makeSquare()
let result = square(5) // 返回 25
  1. 作為尾隨閉包
    在 Swift 中州袒,如果一個函數(shù)的最后一個參數(shù)是閉包揭绑,可以將該閉包寫成尾隨閉包的形式,這種寫法可以讓代碼更加簡潔易讀郎哭。
    例如他匪,下面的函數(shù)接收一個 String 類型的參數(shù)和一個尾隨閉包參數(shù),將閉包應(yīng)用到參數(shù)上并返回結(jié)果:
func processString(_ string: String, with closure: (String) -> String) -> String {
    return closure(string)
}

可以將閉包寫成尾隨閉包的形式夸研,例如:

let result = processString("Hello, World") { (string: String) -> String in
    return string.uppercased()
}

上面的代碼中邦蜜,閉包寫在函數(shù)調(diào)用的圓括號外面,并且省略了閉包參數(shù)的標簽亥至,使代碼更加簡潔易讀悼沈。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市姐扮,隨后出現(xiàn)的幾起案子絮供,更是在濱河造成了極大的恐慌,老刑警劉巖茶敏,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件壤靶,死亡現(xiàn)場離奇詭異,居然都是意外死亡惊搏,警方通過查閱死者的電腦和手機贮乳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門忧换,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人塘揣,你說我怎么就攤上這事包雀∷拚福” “怎么了亲铡?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長葡兑。 經(jīng)常有香客問我奖蔓,道長,這世上最難降的妖魔是什么讹堤? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任吆鹤,我火速辦了婚禮,結(jié)果婚禮上洲守,老公的妹妹穿的比我還像新娘疑务。我一直安慰自己,他們只是感情好梗醇,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布知允。 她就那樣靜靜地躺著,像睡著了一般叙谨。 火紅的嫁衣襯著肌膚如雪温鸽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天手负,我揣著相機與錄音涤垫,去河邊找鬼。 笑死竟终,一個胖子當著我的面吹牛蝠猬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播统捶,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼榆芦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了瘾境?” 一聲冷哼從身側(cè)響起歧杏,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎迷守,沒想到半個月后犬绒,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡兑凿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年凯力,在試婚紗的時候發(fā)現(xiàn)自己被綠了茵瘾。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡咐鹤,死狀恐怖拗秘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情祈惶,我是刑警寧澤雕旨,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站捧请,受9級特大地震影響凡涩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜疹蛉,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一活箕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧可款,春花似錦育韩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至翠拣,卻和暖如春版仔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背误墓。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工蛮粮, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谜慌。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓然想,卻偏偏與公主長得像,于是被迫代替她去往敵國和親欣范。 傳聞我的和親對象是個殘疾皇子变泄,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

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

  • 本章將會介紹 閉包表達式尾隨閉包值捕獲閉包是引用類型逃逸閉包自動閉包枚舉語法使用Switch語句匹配枚舉值關(guān)聯(lián)值原...
    寒橋閱讀 1,559評論 0 3
  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學習記錄文檔妨蛹,今天18年5月份再次想寫文章,發(fā)現(xiàn)簡書還為我保存起的...
    Jenaral閱讀 2,754評論 2 9
  • 1晴竞、隱式解析可選類型 有時候在程序架構(gòu)中蛙卤,第一次被賦值之后,可以確定一個可選類型總會有值,這時候每次使用時都判斷和...
    Mr_xuy閱讀 479評論 1 4
  • 目錄 Swift 1.類型安全Swift 是一個類型安全(type safe)的語言颤难。由于 Swift 是類型安全...
    勇敢的_心_閱讀 378評論 0 1
  • 前言 本篇文章主要講解Swift中又一個相當重要的知識點 ?? 閉包神年,首先會介紹閉包的概念,包含與OC中Block的...
    深圳_你要的昵稱閱讀 476評論 0 9