Swift中的閉包,就是Objective-C中的Block, 其實兩者是一個東西1.Closure變數的聲明 (1)Closure就是匿名函數,我們可以定義一個閉包變數,而這個閉包變數的類型就是我們上面介紹的“函數類型”。 定義一個閉包變數其實就是定義一個特定函數類型的變數,方式如下。 因為...
Swift中的閉包,就是Objective-C中的Block, 其實兩者是一個東西
1.Closure變數的聲明
(1)Closure就是匿名函數,我們可以定義一個閉包變數,而這個閉包變數的類型就是我們上面介紹的“函數類型”。
定義一個閉包變數其實就是定義一個特定函數類型的變數,方式如下。
因為Closure變數沒有賦初始值,所以我們把其聲明為可選類型的變數。在使用時,用!強制打開即可。
var
myCloure0:((Int, Int) -> Int)?
(2)我們還用另一種常用的聲明閉包變數的方式。那就是使用關鍵字typealias定義一個特定函數類型,
我們就可以拿著這個類型去聲明一個Closure變數了,如下所示
//定義閉包類型 (就是一個函數類型)
typealias MyClosureType = (Int, Int) -> Int
var
myCloure:MyClosureType?
2. 給Closure變數賦值
給Closure變數賦值,其實就是把一個函數體賦值給一個函數類型的變數,和函數的定義區別不大。
但是給閉包變數賦值的函數體中含有參數列表,並且參數列表和真正的函數體之間使用關鍵字in來分割。
閉包可選變數的調用方式與普通函數沒什麼兩樣,唯一不同的是這個函數需要用!來強制打開才可以使用。賦值和調用方式如下。
myClosure = { (num1: int, num2: int) -> int in return num1 + num2; } myClosure!(10, 10)