本文共 1446 字,大约阅读时间需要 4 分钟。
每个函数都有特定的函数类型
函数类型是由函数的形参类型、->和返回值类型组成。
例如: func Add(a:Int,b:Int){ ... }该函数的函数类型为(Int,Int)->Void或者(Int,Int)->()func Add()->Int{ ...}该函数的函数类型为()->Intfunc Add(){ ...}该函数的函数类型为()->()或者()->Voidfunc Add(a:Int,b:Int)->Int{ ...} 该函数的函数类型为(Int,Int)->Int
定义变量,其类型为(Int,Int)->Int var myadd:(Int,Int)->Intfunc Add(a:Int,b:Int)->Int{ return a+b}myadd=Add print(myadd(3,4)) //输出7当函数类型和我们定义的变量类型一致的时候我们就能够赋值成功。
有些时候我们写一个函数,这个函数的大部分逻辑是十分确定的,但某些处理逻辑是无法确定的需要根据具体情况进行动态的改变。这个时候我们可以在函数中定义函数类型的形参,这样在调用该函数的时候传入不同的函数作为参数,从而动态的改变函数的功能。
func add(var a:Int,var b:Int,fn:(Int)->Int)->Int { return a+fn(b) } //不对b进行改变 funcOnlyb(val :Int)->Int { return b; }//对b进行平方改变 func square(val:Int)->Int{ return b*b } 对b进行立方改变func cube (val:Int)->Int { return b*b*b } print(add(3,4,fn:Onlyb))//输出7 prin(add(3,4,fn:square))//输出19 print(add(3,4,fn:cube))//输出67
分析代码:我们在上面程序中,有两个变量的值是不变的,但对第二个变量进行变化是动态的,可能需要平方操作或者立方操作,也可能不需要任何操作。
使用函数类型作为返回值类型 func squar (val:Int)->Int { return val*val } func cube (val:Int)->Int { return val*val*val } func Onlyb (val:Int)Int { return b } //注意返回值类型为(Int)->Int func Math(#type:String)->(Int)->Int { switch(type) { case"square": return square case "Onlyb": returnOnlyb case "cube": return cube default: print("输入函数错误呀") } var math=Math(type:"cube") print(math(5))//输出125 }
转载地址:http://ndvja.baihongyu.com/