9.3 函数返回值
Swift中函数的返回值也是比较灵活的,形式主要有3种:无返回值、单一返回值和多返回值。这一节我们介绍这3种函数返回值的不同形式。
9.3.1 无返回值函数
有的函数只是为了处理某个过程,或者要返回的数据要通过inout
类型参数传递出来,这时可以将函数设置为无返回值。所谓无返回结果,事实上是Void
类型,即表示没有数据的类型。
无返回值函数的语法格式有如下3种形式:
func 函数名(参数列表) { ①
语句组
}
func 函数名(参数列表) ->() { ②
语句组
}
func 函数名(参数列表) ->Void { ③
语句组
}
无返回值函数不需要“return返回值
”语句,第①行语法格式很彻底,参数列表后面没有箭头和类型,第②行语法格式->()
,表示返回类型是空的元组。第③行语法格式->Void
,表示返回类型是Void
类型。
第①行的格式函数定义我们在上一节的increment
函数中使用过。increment
函数修改为②和③格式的语法如下:
func increment(inout value:Double, amount:Double = 1.0) {
value += amount
}
func increment(inout value:Double, amount:Double = 1.0) ->() {
value += amount
}
func increment(inout value:Double, amount:Double = 1.0) ->Void {
value += amount
}
9.3.2 多返回值函数
有时我们需要函数返回多个值,这可以通过两种方式来实现。一种是在函数定义的时候,将函数的多个参数声明为引用类型传递,这样当函数调用结束时,这些参数的值就变化了。另一种是将返回定义为元组类型。
本节将介绍通过元组类型返回多值的实现。下面看一个示例:
func position(dt: Double, speed:(x:Int, y:Int)) -> (x:Int, y:Int) { ①
var posx:Int = speed.x Int(dt) ②
var posy:Int = speed.y Int(dt) ③
return (posx, posy) ④
}
let move = position(60.0, (10, -5)) ⑤
println("物体位移:\(move.x) , \(move.y)") ⑥
这个示例是计算物体在指定时间和速度情况下的位移。第①行代码是定义position
函数,其中dt: Double
参数是时间,参数speed:(x:Int, y:Int)
是元组类型,x
和y
表示分别表示在x轴和y轴上的速度,速度是矢量,是有方向的,负值表示沿x轴或y轴相反的方向运行。position
函数的返回值是(x:Int, y:Int)
的元组类型。
函数体中的第②行代码var posx:Int = speed.x * Int(dt)
计算x方向的位移,第③行代码var posy:Int = speed.y * Int(dt)
计算y方向的位移。最后第④行代码return (posx, posy)
将计算后的数据返回。
第⑤行代码调用函数,传递的时间是60.0秒,速度是(10, -5)。第⑥行代码打印输出结果,结果如下:
物体位移:600 , -300