元组作为返回值示例
func test(arr: [Int]) -> (min: Int, max: Int) {
var templeMin = arr[0]
var templeMax = arr[0]
for value in arr[1..<arr.count] {
if value < templeMin {
templeMin = value
} else if value > templeMax {
templeMax = value�
}
}
return (templeMin, templeMax)
}
元组返回值的访问
元组已经在函数返回值中命名,不需要在函数返回时再次命名
let bounds = test(arr:[1,3,5,6,7,34])
print("min is \(bounds.min), max is \(bounds.max)")
//打印min is 1, max is 34
空数组作为函数参数传入时
问题:函数不会对作为参数传入的数组进行安全检查,如果空数组传入函数,在函数体内通过下标访问数组元素,将导致运行时错误
解决办法:在函数体内判断数组是否为空,为空返回nil;返回值类型写为可选元组类型。(说明:再函数体内判断数组是否为空,为空时,返回nil。但是nil不属于函数的返回值类型(元组),因此,要将返回值写为可选元组类型)
-
示例:
func test(arr:[int]) -> (min: Int, max: Int)? { if arr.isEmpty {return nil} //...判断最大小值 return (templeMin, templeMax) }
-
返回值的使用:可以使用可选绑定(if let)检查函数返回的是元组还是nil
if let bounds = test(arr: [2,43,5,6,7,2]) { print("min is \(bounds.min), max is \(bounds.max)")� }