最终是出于性能原因:
通常被拒绝的变更
...
字符串、字符和集合类型
尽管没有什么能阻止你自己动手:
extension Collection {
subscript(safelyIndex i: Index) -> Element? {
get {
guard self.indices.contains(i) else { return nil }
return self[i]
}
}
}
let array = Array(0...10)
let n = array[safelyIndex: 3]
print(n as Any) // => Optional(3)
Run Code Online (Sandbox Code Playgroud)