8 函數類型——《Swift3.0從入門到出家

Swift語言中每個函數都有它特定的數據類型,稱其爲函數類型數組

函數類型和基本數據類型同樣,能夠定義變量或者常量,能夠定義函數形參,也能夠作爲函數的返回值類型函數

 

函數類型的格式爲:參數列表的數據類型—>返回值類型spa

 

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

 

函數類型:(String,Int)->Stringci

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

 

函數類型:(Int)->() 或者 (Int)->Voidit

 

<3>func test3(){}io

 

函數類型:()->() 或者 ()->Voidclass

 

定義函數類型的變量test

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..<arr.count - 1 {

        for j in 0..<arr.count - i - 1 {    

            if method(arr[j],arr[j + 1]) {

                exchangeNumIndex(&arr[j], two: &arr[j + 1])

            }

        }

    }

    

}

//實現升序

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))

函數類型做爲函數形參,經過判斷形參對應的方法能使一個函數實現不一樣的功能

相關文章
相關標籤/搜索