當前文章的短網址連結為: https://unos.top/7xbg
注意事项:
IndexSet
的索引不一定是连续的,因此直接遍历可能会跳过一些索引。- 当使用
ranges
时,注意它提供的是不重叠的范围集合,因此你可能会得到多个范围。 - 遍历
IndexSet
通常比遍历一个简单的数组或范围要稍微复杂一些,因为它设计用于高效地表示和操作不连续的索引集合。
1. 通过 forEach
方法遍历
let indexSet = IndexSet([0, 2, 4, 6, 8])
indexSet.forEach { index in
print("Index: \(index)")
}
Swift这个方法会遍历 IndexSet
中的每一个索引并执行闭包中的代码。
2. 使用 enumerated()
方法
如果你需要同时获取索引和其在 IndexSet
中的位置(即索引的顺序),可以使用 enumerated()
:
for (offset, index) in indexSet.enumerated() {
//index 就是实际要处理的数组索引
print("Offset: \(offset), Index: \(index)")
}
Swift这里,offset
表示当前索引在 IndexSet
中的位置(从0开始),而 index
表示 IndexSet
中存储的实际索引值。
3. 通过迭代器遍历
IndexSet
实现了 Sequence
协议,因此你可以使用传统的 for-in
循环来遍历:
for index in indexSet {
print("Index: \(index)")
}
Swift4. 使用 ranges
属性
如果你的 IndexSet
包含了连续的索引范围,你可以使用 ranges
属性,它返回一个 RangeSet
(一组不重叠的范围),然后遍历这些范围:
for range in indexSet.ranges {
print("Range: \(range)")
// 你也可以遍历每个范围内的索引
for index in range {
print(" Index: \(index)")
}
}
Swift