8 函数类型——《Swift3.0从入门到出家》原创连载

8 函数类型——《Swift3.0从入门到出家》

函数类型

Swift语言中每一个函数都有它特定的数据类型,称其为函数类型

函数类型和基本数据类型一样,可以定义变量或者常量,可以定义函数形参,也可以做为函数的返回值类型

函数类型的格式为:参数列表的数据类型—>返回值类型

<1>func test1(name: String,age: Int)->String{}

函数类型:(String,Int)->String

<2>func test2(a: Int){}

函数类型:(Int)->() 或者 (Int)->Void

<3>func test3(){}

函数类型:()->() 或者 ()->Void


定义函数类型的变量

func sumAAndB(a: Int,b: Int) -> Int {//函数类型为(Int,Int)->Int

return a + b

}

var myFunction: (Int,Int)->Int = sumAAndB//myFunction 的类型标注为函数类型



func shapePan(width: Int,height: Int) ->Int {

return (height + width) * 2

}

myFunction = shapePan //可以将函数赋给相同函数类型的变量

使用函数类型定义函数形参

例子:实现数组中的数据排序:

var array = [1,1231,124,54654,10]

//数组升序函数

func isBigerSort(oneNum: Int,twoNum: Int)->Bool {

    return oneNum > twoNum

}

//数组降序函数

func isSmallerSort(oneNum: Int,twoNum: Int) ->Bool {   

   return oneNum < twoNum

}

//两个数交换数组中的显示位置的函数

func exchangeNumIndex(inout one: Int,inout two: Int) -> Void {

    let tmp = one

    one = two

    two = tmp

}

//排序函数,其中method为函数类型的参数

func sortArray(inout arr: [Int],method: (Int,Int)->Bool) {  

   for i in 0..

函数调用——实现升序

sortArray(&array, method: isBigerSort)//传入数组地址和相同函数类型的函数

print(array)

函数调用--实现降序

sortArray(&array, method: isSmallerSort)

print(array)

函数类型作为函数的返回值类型

func triangle(length: Int) ->Int {

    return 3 * length

}

func square(length: Int) ->Int {

    return 4 * length

}

func circle(r: Int) ->Int {    

    return Int(3.14) * r * r

}

func getShapeMeter(type: String) ->(Int)->Int {  

    switch type {

    case "triangle":

        return triangle

    case "square":
    
        return square

     default:

         return circle

     }

}

函数调用:

var myFunc = getShapeMeter("triangle")

print(myFunc(10))

函数类型作为函数形参,通过判断形参对应的方法能使一个函数实现不同的功能


拓展阅读

  • 2 分支语句——《Swift3.0 从入门到出家》

  • 3 循环语句——《Swift3.0从入门到出家》

  • 4 字符串 Swift/Objective -C ——《Swift3.0从入门到出家》

  • 5 数组 Swift/Object-C ——《Swift3.0从入门到出家》

  • 6 字典和集合——《Swift3.0从入门到出家》

  • 7 函数——《Swift3.0从入门到出家》

  • 8 函数类型——《Swift3.0从入门到出家》

  • 9 闭包——《Swift3.0从入门到出家》

  • 10 结构体和类 —— 《Swift3.0 从入门到出家》

你可能感兴趣的:(8 函数类型——《Swift3.0从入门到出家》原创连载)