如何防止数组索引超出范围'错误?

时间:2015-03-17 03:12:39

标签: swift

是否有一种方法,类似于使用if let和/或选项,来测试您是否要在Swift中索引空缓冲区?

1 个答案:

答案 0 :(得分:15)

定义你自己的:

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
}