首先让我们使用更清晰的名称
struct Numbers {
var values: [Double]
}
计算属性
现在我们可以添加一个计算属性来返回前 6 个值
struct Numbers {
var values: [Double]
var first6Numbers: [Double] {
let numElms = min(values.count, 6)
return Array(values[0..<numElms])
}
}
如您所见,计算属性内的代码确实检查值中是否至少有 6 个元素。如果是,则返回前 6 个,否则返回尽可能多的元素。
示例
let fewNumbers = Numbers(values: [1,2,3])
fewNumbers.first6Numbers // [1,2,3]
let manyNumbers = Numbers(values: [1,2,3,4,5,6,7,8,9])
manyNumbers.first6Numbers // [1,2,3,4,5,6]
功能
我们可以使用函数来指定(通过参数)我们希望在结果中包含多少个数字,而不是总是返回前 6 个值
struct Numbers {
var values: [Double]
func firstNumbers(numElms: Int) -> [Double] {
let numElms = min(values.count, numElms)
return Array(values[0..<numElms])
}
}
元组
我们还可以返回一个可选的 6 Double 元组。
在这种情况下,如果值中至少有 6 个值,则返回 6 个 Double 的双倍。否则返回 nil 值。
struct Numbers {
var values: [Double]
var first6Values: (Double, Double, Double, Double, Double, Double)? {
guard values.count >= 6 else { return nil }
return (values[0], values[1], values[2], values[3], values[4], values[5])
}
}
示例
let numbers = Numbers(values: [1,2,3,4,5,6,7,8])
if let first6 = numbers.first6Values {
print(first6.0)
print(first6.1)
print(first6.2)
print(first6.3)
print(first6.4)
print(first6.5)
} else {
print("Could not find at least 6 Doubles")
}