前言
1.閉包是功能性子包含模塊,可以在代碼中被傳遞和使用篡腌。在Swift中的閉包與C和Obective-C 中的block 比較相似褐荷,通常我們這么使用的。
2.閉包的第一種形式: 全局函數(shù)是一個(gè)有名字但不會(huì)捕獲任何的的閉包嘹悼,
{
(參數(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}就是一個(gè)閉包的實(shí)現(xiàn)。GetList參數(shù)Pre:(int)->Bool 是一個(gè)函數(shù)杨伙,沒有實(shí)現(xiàn)其监,在調(diào)用的時(shí)候傳人閉包 {(s:int) in return s>2} 來實(shí)現(xiàn)具體的算法,{(s:int) in return s>2}閉包參數(shù)為整形缀台,返回值為布爾類型棠赛;
示例
- 1.跟在OC當(dāng)中使用一樣,我們的首先定義一個(gè)Block 類型膛腐,這里是定義一個(gè)閉包類型;
- 2.聲明一個(gè)block變量,同樣的這里定義一個(gè)閉包函數(shù)變量;
/// 這是一個(gè)函數(shù)閉包變量
typealias myfunction = (SXstr:NSString) ->Void;
// 定義函數(shù)變量
var myBlock = myfunction?()
- 3.這里示例在一個(gè)點(diǎn)擊事件中睛约,回調(diào)一個(gè)字符串,(SXstr: "你好哲身!")作為示例
/**
在一個(gè)點(diǎn)擊事件中傳遞閉包函數(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)
}