Есть ли способ, похожий на использование if let
и/или optionals, чтобы проверить, собираетесь ли вы индексировать пустой буфер в Swift?
Как предотвратить ошибку "Индекс массива вне диапазона"?
Ответ 1
Определите свой собственный:
extension Array {
func ref (i:Int) -> T? {
return 0 <= i && i < count ? self[i] : nil
}
}
Функция ref()
возвращает необязательный параметр, поэтому он может быть nil
, и вы можете использовать синтаксис if let
для доступа к возвращаемому значению из ref()
, когда он существует. Вы использовали бы это как таковое:
var myA = [10,20,30]
if let val = myA.ref(index) {
// Use 'val' if index is < 3
}
else {
// Do this if the index is too high
}