Получение индекса элемента при переборе массива в Swift

Получение индекса элемента при переборе словаря довольно очевидно:

1
2
3
4
5
let dictionary = [0: "zero", 1: "one", 2: "two", 3: "three"]

for (key, value) in dictionary {
println("\(key): \(value)")
}

Совсем по-другому дело обстоит с массивами:

1
let array = ["zero", "one", "two", "three"]

Для получения индекса элемента при переборе массива в голову приходит лишь старый добрый цикл for:

1
2
3
for var i = 0; i < array.count; ++i {
println("\(i): \(array[i])")
}

ну или чуть попроще цикл for-in:

1
2
3
for i in 0..<array.count {
println("\(i): \(array[i])")
}

Однако в Свифте существует специальная глобальная функция enumerate, которая из элементов массива делает кортежи (tuple), состоящие как раз из индекса элемента и его значения:

1
2
3
for (key, value) in enumerate(array) {
println("\(key): \(value)")
}

В Swift 2.0 её необходимо будет вызывать из самих типов, отвечающих протоколу SequenceType, вот так:

1
2
3
for (key, value) in array.enumerate() {
print("\(key): \(value)")
}