前言
1.閉包是功能性子包含模塊,可以在代碼中被傳遞和使用。在Swift中的閉包與C和Obective-C 中的block 比較相似,通常我們這么使用的。
2.閉包的第一種形式: 全局函數(shù)是一個有名字但不會捕獲任何的的閉包,
{
(參數(shù) : 類型) - > 返回類型 in
執(zhí)行方法
return 返回類型;
let arr = GetList( [1,2,3,4]), {(s:int) in return s>2} )
println(arr)
}
- 3.上面的代碼可以看出,{(s:int) in return s>2}就是一個閉包的實現(xiàn)。GetList參數(shù)Pre:(int)->Bool 是一個函數(shù),沒有實現(xiàn),在調(diào)用的時候傳人閉包 {(s:int) in return s>2} 來實現(xiàn)具體的算法,{(s:int) in return s>2}閉包參數(shù)為整形,返回值為布爾類型;
示例
- 1.跟在OC當中使用一樣,我們的首先定義一個Block 類型,這里是定義一個閉包類型;
- 2.聲明一個block變量,同樣的這里定義一個閉包函數(shù)變量;
/// 這是一個函數(shù)閉包變量
typealias myfunction = (SXstr:NSString) ->Void;
// 定義函數(shù)變量
var myBlock = myfunction?()
- 3.這里示例在一個點擊事件中,回調(diào)一個字符串,(SXstr: "你好!")作為示例
/**
在一個點擊事件中傳遞閉包函數(shù)的變量:
*/
func Tap()->Void
{
//值傳遞字符串
myBlock!(SXstr: "你好!")
self .dismissViewControllerAnimated(true, completion: nil)
}
- 4.函數(shù)作為值調(diào)用閉包函數(shù)。
func Long(Block:myfunction)->Void
{
myBlock = Block;
}
- 5.調(diào)用閉包函數(shù)
// 調(diào)用閉包函數(shù)
myVC.Long { (SXstr) -> Void in
print(SXstr)
}