Подтвердить что ты не робот

Каково правильное поведение endIndex массива в Swift?

EndIndex возвращает те же значения, что и count. Это правильное поведение или ошибка?

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

Ответ 1

count - количество элементов в коллекции, тогда как endIndex - Index (из протокола Indexable), который только что прошел конец коллекции.

Для 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

Ответ 2

Array.endIndex означает 1 за концом массива (или то же, что и count) для целей итерации, а не для подписи.

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