函数在Swift里面和其他类一样也包含类型属性TYPE, 就像数字类型Int,字符类型Character
下面例子,他们的类型就是 ( Int , Int ) -> Int
之所以这样设计,你可以方便的把函数作为参数,作为变量,也可以作为返回值:
import UIKit
import CoreSpotlight
func add(_ a:Int,_ b:Int) -> Int{
return a+b
}
func multiply(_ a:Int,_ b:Int) -> Int{
return a*b
}
var doMath:(Int,Int)->Int
doMath=add
doMath=multiply
func jiaOrCheng(_ something:(Int,Int)->Int,_ a:Int,_ b:Int){
print("\(something(a,b))")
}
jiaOrCheng(add,1,2)
func JiaOrJian(jiaBuJia:Bool) -> (Int) -> Int{
func jia(_ a:Int)->Int { return a + 1 }
func jian(_ b:Int)->Int { return b - 1 }
return jiaBuJia ? jia : jian
}
var count = -3 //计算从count到0腰加几次
//严重注意,平常func作为变量传递时,func不带(),如果带了(),那么传递到是其返回值
//countSteps是赋值给了 (Int)->Int
let countSteps = JiaOrJian(jiaBuJia: count < 0)
while count != 0 {
print(count)
count = countSteps(count)
}
//返回
-3
-2
-1