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))
函數類型做爲函數形參,經過判斷形參對應的方法能使一個函數實現不一樣的功能