开发者也可以像声明普通变量那样来声明一个函数变量,同样也可以对此变量进行赋值、调用等操作。将函数作为数据类型这种语言设计思路有强大的优势,这将允许开发者将一个函数作为另一个函数的参数或者返回值,大大增强了编程的灵活性。
var Sum :(Int,Int)->Int // 函数类型由参数和返回值决定
Sum = {(parama1:Int,parama2:Int) in // {}为闭包结构,in为闭包结构关键字
return parama1 + parama2}
//函数作为变量、函数作为参数的使用
// 声明函数
func Sum(parama:Int...)->Int {
var temp = 0
for item in parama {
temp += item
}
return temp
}
// 声明函数类型的变量
var addSum:(Int...)->Int
// 将函数赋值给函数类型变量
addSum = Sum
// 调用函数类型的变量
var totalNum = addSum(1,2,3,4,5)
// 将函数作为参数
func doSome(parama:(Int...)->Int) {
print(parama(1,2))
}
doSome(parama: addSum)
// 将函数作为返回值
var addFunc:(Int,Int)->Int
func myFunc15() -> (Int,Int)->Int {
return {(param1:Int,param2:Int)in
return param1+param2}
}
//使用addFunc变量获取返回值
addFunc = myFunc15()
//进行调用
addFunc(10,20) // 这里跟我们之前的block回调没有关系,因为myFunc15的返回值是一个函数,所以addFunc只是一个函数,这一步仅仅是函数的调用
函数的嵌套
func myFunc16() -> (Int,Int)->Int {
func subFunc(param1:Int,param2:Int)->Int{
return param1+param2 }
return subFunc}
网友评论