Swift 閉包的認識

1.閉包定義

swift語言中可以使用一塊獨立的代碼塊替代函數的定義稱獨立的代碼塊為閉包

//閉包的格式:

func sumAAndB(a: Int,b: Int) ->Int {
    return a + b
}
print(sumAAndB(10, b: 20))

//<1>使用閉包實現兩個數的和

var sum: (Int,Int)->Int = {(a: Int,b: Int)->Intin

return a + b

}

//[注意]閉包不調用和沒有定義是一樣的里面的語句塊永遠不會執行

2.閉包的簡化(closure)

//<1>當執行語句只有一個表達式的時候 return關鍵字可以缺省

var closure1 = {(a: Int,b: Int) -> Intin

a > b ? a : b

}

print(closure1(10,20))

sortArr(&array123, method: {(a: Int,b: Int)->Boolin

a > b

})

print(array123)

//<2>當執行語句只有一個表達式而且表達式的結果類型可以推斷出來那么return關鍵字和返回值類型可以同時缺省

var closure2 = {(a: Int,b: Int) in

a > b ? a : b

}

print(closure2(100,10000))

sortArr(&array123, method: {(a: Int,b: Int) in

a < b })

print(array123)

//<3>當參數的類型已知并且滿足上面<2>的條件參數的名稱可以缺省參數的類型可以缺省返回值類型可以缺省 return關鍵字可以缺省 in也缺省

var closure3: (Int,Int)->Int  = {$0 > $1 ? $0 : $1}

print(closure3(-100,0))

sortArr(&array123, method: {$0 > $1})

print(array123)

//<4>當參數個數為兩個并且滿足<3>的條件閉包中直接添加運算符號就可以

sortArr(&array123, method: <)

print(array123)

3.尾隨閉包

//當函數最后一個形參是函數類型的變量時對函數類型的變量賦值時需要使用閉包那么閉包傳值的書寫位置可以放在所有參數列表之外不放在參數列表的最后位置 我們稱這種寫法為尾隨閉包

//定義函數實現兩個數的和和差

func SumAndSub(a: Int,b: Int,method: (Int,Int)->Int) {

print(method(a,b))

}

SumAndSub(10, b: 20, method: {(a: Int,b: Int)->Intin

return a + b

})

SumAndSub(100, b: 200, method: -)

SumAndSub(0, b: 10){$0 - $1}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容