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

简介:

认识函数类型

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

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

例如:
    func Add(a:Int,b:Int){
    ...
    }
该函数的函数类型为(Int,Int)->Void或者(Int,Int)->()
func Add()->Int{
   ...
}
该函数的函数类型为()->Int
func Add(){
    ...
}
该函数的函数类型为()->()或者()->Void

func Add(a:Int,b:Int)->Int{
    ...
}

  该函数的函数类型为(Int,Int)->Int

使用函数类型

定义变量

定义变量,其类型为(Int,Int)->Int
 var myadd:(Int,Int)->Int
func 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
    }
目录
相关文章
|
4天前
|
存储 Swift
在Swift编程语言中,浮点数类型
在Swift编程语言中,浮点数类型
35 6
|
4天前
|
Swift
在Swift编程语言中,整数类型
在Swift编程语言中,整数类型
22 1
|
7月前
|
存储 Swift C++
41 Swift不透明类型
Swift不透明类型
31 0
|
7月前
|
算法 Swift C++
34 Swift为了协议 关联类型
Swift为了协议 关联类型
40 0
|
3天前
|
安全 Swift
Swift 语言:什么是可选类型(Optional)?如何处理可选类型的安全解包?
Swift的可选类型是处理值可能缺失的类,用?表示。它们能表示有值或无值状态。安全解包用`if let`或`guard let`避免崩溃,而强制解包`!`则风险较高,若值为`nil`会触发运行时错误。
9 0
|
3天前
|
存储 Swift
Swift 语言:什么是闭包(Closure)?它们与函数的区别是什么?
Swift 语言:什么是闭包(Closure)?它们与函数的区别是什么?
42 1
|
4天前
|
Swift
在Swift编程语言中,有符号整数类型
在Swift编程语言中,有符号整数类型
27 2
|
4天前
|
编译器 Swift
在Swift编程语言中,布尔类型
在Swift编程语言中,布尔类型
27 1
|
4天前
|
Swift
Swift中的函数
Swift中的函数
23 1
|
4天前
|
存储 Swift
Swift中,函数和闭包
Swift中,函数和闭包
37 1

相关课程

更多