8 函數(shù)類型——《Swift3.0從入門到出家》原創(chuàng)連載

8 函數(shù)類型——《Swift3.0從入門到出家》

函數(shù)類型

Swift語(yǔ)言中每一個(gè)函數(shù)都有它特定的數(shù)據(jù)類型,稱其為函數(shù)類型

函數(shù)類型和基本數(shù)據(jù)類型一樣,可以定義變量或者常量,可以定義函數(shù)形參,也可以做為函數(shù)的返回值類型

函數(shù)類型的格式為:參數(shù)列表的數(shù)據(jù)類型—>返回值類型

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

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

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

函數(shù)類型:(Int)->() 或者 (Int)->Void

<3>func test3(){}

函數(shù)類型:()->() 或者 ()->Void


定義函數(shù)類型的變量

func sumAAndB(a: Int,b: Int) -> Int {//函數(shù)類型為(Int,Int)->Int

return a + b

}

var myFunction: (Int,Int)->Int = sumAAndB//myFunction 的類型標(biāo)注為函數(shù)類型



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

return (height + width) * 2

}

myFunction = shapePan //可以將函數(shù)賦給相同函數(shù)類型的變量

使用函數(shù)類型定義函數(shù)形參

例子:實(shí)現(xiàn)數(shù)組中的數(shù)據(jù)排序:

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

//數(shù)組升序函數(shù)

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

    return oneNum > twoNum

}

//數(shù)組降序函數(shù)

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

   return oneNum < twoNum

}

//兩個(gè)數(shù)交換數(shù)組中的顯示位置的函數(shù)

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

    let tmp = one

    one = two

    two = tmp

}

//排序函數(shù),其中method為函數(shù)類型的參數(shù)

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

            }

        }

    }
}

函數(shù)調(diào)用——實(shí)現(xiàn)升序

sortArray(&array, method: isBigerSort)//傳入數(shù)組地址和相同函數(shù)類型的函數(shù)

print(array)

函數(shù)調(diào)用--實(shí)現(xiàn)降序

sortArray(&array, method: isSmallerSort)

print(array)

函數(shù)類型作為函數(shù)的返回值類型

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

     }

}

函數(shù)調(diào)用:

var myFunc = getShapeMeter("triangle")

print(myFunc(10))

函數(shù)類型作為函數(shù)形參,通過(guò)判斷形參對(duì)應(yīng)的方法能使一個(gè)函數(shù)實(shí)現(xiàn)不同的功能


拓展閱讀

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容