我想迭代一個任意的Swift集合並獲取元素及其索引。在Swift中使用索引迭代集合的正確和慣用方法?
基本上替代:
for (idx, el) in collection.enumerate() {
print("element at \(idx) is \(el)")
}
但讓我真正的通用指標,而不僅僅是連續整數從0開始。
當然,該解決方案將是一個通用的一部分函數可以接受任何類型的集合,否則它們之間的差異不會很重要。
有沒有更好的方式比像下面的天真循環?
var idx = collection.startIndex, endIdx = collection.endIndex
while idx < endIdx {
let el = collection[idx]
print("element at \(idx) is \(el)")
idx = idx.successor()
}
寫作看起來相當容易出錯。我知道我可以將該代碼轉換爲代碼片段,但如果可能的話,我希望找到更簡潔,更具地道性的解決方案。
從我的測試idx.dynamicType爲int,但你說的通用指標我失去了什麼? –
@AliKıran:這取決於收藏。數組有整數索引,但字符串例如有一個特殊的String.CharacterView.Index類型。同樣,集合的索引不需要從零開始(例如數組切片)。 –
我希望鏈接到「重複」可以解決您的問題。否則,讓我知道,我會重新打開這個問題。 –