標籤:swift
var someInt: Int = 7
Int 就是表示someInt的類型,同理,這個Int也可以換成函數類型,所以也可以像其他類型那樣使用函數類型
函數類型主要由三種用途:(一)就是上面說的了 (二)作為參數(三)作為傳回型別
再加一個,就是函數也可以嵌套(nested)
let math: (Int , Int) -> Int = addTwoInts printMathResult(math, a: 9, b: 9) //printMathResult(math, 9, 9)
func addTwoInts(a:Int , b:Int) -> Int { return a + b }
func printMathResult(mathFunction: (Int , Int) -> Int , a: Int , b: Int) { print("mathResult:\(mathFunction(a , b))") } // func printMathResult(mathFunction: (Int , Int) -> Int , _ a: Int , _ b: Int) { print("mathResult:\(mathFunction(a , b))") } let math: (Int , Int) -> Int = addTwoInts 這裡就定義了math 為一個接收兩個Int型參數並且有返回值且返回為Int型的函數類型
addTwoInts就是定義一個普通函數
printMathResult由函數名字就猜得到這個函數實現的列印功能,並且接收三個參數,第一個參數類型要是函數類型,第二和第三個是兩個Int型
兩處加//處的地方和上面一行是等效的,只是形參名字省不省略而已
線面看一個嵌套的例子(嵌套就是在一個函數裡面可以繼續寫函數)
var currentValue = -4 let moveNearZero = chooseStepFunction(currentValue > 0) while currentValue != 0 { print("\(currentValue)..") currentValue = moveNearZero(currentValue) } print("zero!") } func chooseStepFunction(backwards: Bool) -> (Int) -> Int { func stepForward(input: Int) -> Int { return input + 1 } func stepBackward(input: Int) -> Int { return input - 1 } return backwards ? stepBackward : stepForward }
這裡面既包括了函數嵌套,也包括了函數可以作為傳回型別
下面我會好好研究下閉包,在寫部落格,謝謝
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
swift學習之函數類型