Jika saya memiliki array di Swift, dan mencoba mengakses indeks yang di luar batas, ada kesalahan runtime yang tidak mengejutkan:
var str = ["Apple", "Banana", "Coconut"]
str[0] // "Apple"
str[3] // EXC_BAD_INSTRUCTION
Namun, saya akan berpikir dengan semua perangkaian opsional dan keamanan yang dibawa Swift, akan sepele untuk melakukan sesuatu seperti:
let theIndex = 3
if let nonexistent = str[theIndex] { // Bounds check + Lookup
print(nonexistent)
...do other things with nonexistent...
}
Dari pada:
let theIndex = 3
if (theIndex < str.count) { // Bounds check
let nonexistent = str[theIndex] // Lookup
print(nonexistent)
...do other things with nonexistent...
}
Tapi ini bukan masalahnya - saya harus menggunakan pernyataan ol ' if
untuk memeriksa dan memastikan indeks kurang dari str.count
.
Saya mencoba menambahkan subscript()
implementasi saya sendiri , tetapi saya tidak yakin bagaimana meneruskan panggilan ke implementasi asli, atau mengakses item (berbasis indeks) tanpa menggunakan notasi subskrip:
extension Array {
subscript(var index: Int) -> AnyObject? {
if index >= self.count {
NSLog("Womp!")
return nil
}
return ... // What?
}
}