在Swift中,方法的返回值比较多样化,可以是自定义类型,也可以是元组,甚至是返回一个方法(没听错)。
多样返回值
返回基本类型
func getValue() -> Int {
return 1
}
返回元组
func getPoint() -> (Int, Int) {
return (x: 1, y: 2)
}
返回方法
func min(x: Int, y: Int) -> Int {
if x > y {
return y;
}
return x;
}
func getMin() -> (Int, Int) -> Int {
return min
}
输入输出参数
用inout声明输入输出参数
func change(x: inout Int, y: inout Int) {
let temp = x
x = y
y = temp
}
如果没有inout的话,外部的x和y值是不会变的。在change方法中,用inout声明了x和y参数,外部传进来的是x和y的地址,所以方法里面做操作的话,外面的值是会改变的。有点类似于指针。
外部使用方式
var x = 1
var y = 2
change(&x, &y)
函数可以作为变量或者常量的类型
在Swift中,函数像元组一样,可以当做一种类型
let minFunc: (Int, Int) -> Int = min
let minValue = minFunc(5, 6)
很有趣吧!!
嵌套函数
Swift允许方法中定义方法
func choose(backward: Bool) -> (Int) -> Int {
func stepForeward(input: Int) -> Int {
return input + 1
}
func stepBackward(input: Int) -> Int {
return input - 1
}
return backward ? stepForeward : stepBackward
}
var value = 4
while value > 0 {
let chooseFun = choose(backward: value < 0)
value = chooseFun(value)
}