Swift中数组的endIndex的正确行为是什么?

时间:2014-07-20 17:35:27

标签: arrays swift

endIndex返回与count相同的值。 这是正确的行为还是错误?

var ar = [1, 2, 3, 4]
ar.count // 4
ar.endIndex // 4

2 个答案:

答案 0 :(得分:22)

count是集合中的项目数,而endIndexIndex (from the Indexable protocol),它刚好超过集合的末尾。

对于Array,这些是相同的。对于其他一些集合,例如ArraySlice,它们不是:

let array = ["a", "b", "c", "d", "e"]

array.startIndex  // 0
array.count       // 5
array.endIndex    // 5

let slice = array[1..<4]  // elements are "b", "c", "d"

slice.startIndex  // 1
slice.count       // 3
slice.endIndex    // 4

答案 1 :(得分:11)

为了迭代目的,

Array.endIndex意味着是数组末尾的1(或与count相同),而不是下标。

let x = [1, 2, 3, 4]
for var i = x.startIndex; i < x.endIndex; i++ {
    println(x[i])
}