Object-C--->Swift之(六)函数类型

来源:互联网 发布:帝国cms分页样式修改 编辑:程序博客网 时间:2024/05/02 01:56

认识函数类型

每个函数都有特定的函数类型

函数类型是由函数的形参类型、->和返回值类型组成。

例如:    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    }
1 0
原创粉丝点击