Swift閉包類似OC的代碼塊(block)
語法
{ (參數(shù)1(可無可有) ) -> 返回值類型(可無可有) in
執(zhí)行的代碼
}
先來定義一個 有參數(shù),有返回值 閉包
//計算兩個數(shù)值的和
// 定義執(zhí)行的代碼塊,賦值給一個常量
let calculate = { (item1 : Int , item2 : Int) ->Int in
return item1 + item2
}
//當我們傳值后,會立即執(zhí)行代碼塊,根據(jù)有無返回值
let result = calculate(200,50)
print(result)
//運行結果 250
實際項目中,
舉個例子: 購買商品訂單結算頁面,結算前你必須要填入收貨地址(這只是其中一個必選項),當我從收貨地址頁面選擇好地址時,要顯示在訂單頁面給客戶看到,這是我只需要一個閉包就能完成(當然 代理也是能實現(xiàn)的)
//在訂單控制器 (OrderlistController) 執(zhí)行閉包函數(shù)
let addressController = AddressController()//地址選擇頁面
//閉包執(zhí)行區(qū)
addressController.goodsAddress = { [weak self] (address:String) in
//賦值當前控件 顯示收貨地址
self.addressLable.text = address
}
//地址控制器 (AddressController) 選擇收貨地址
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
guard let addressModel = AddressListArray[indexpath.row] else{return}
//閉包賦值操作, 當閉包賦值執(zhí)行時, 會立即調用 閉包執(zhí)行區(qū)
goodsAddress(addressModel.name)//addressModel.name 指地址名稱
}
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者