通常如果要做到数组不越界,那么我们一般的写法
let temp = [1,2,3,4,5]
if temp.count > 6 {
_ = temp[6]
}
每个地方都这么写,那么就显得很冗杂了代码.
那我们希望如果越界的话返回的是nil
那么我们可以利用 subscript 以及 泛型 来实现
extension Array {
subscript (safe index: Int) -> Element? {
if self.count > index {
return self[index]
}
return nil
}
}
测试代码
let temp = [1,2,3,4,5]
let num = temp[safe : 1]
print("num ---\(num)")
打印结果:
num ---Optional(2)
let num = temp[safe : 7]
print("num ---\(num)")
打印结果:
num ---nil