在Swift中是否有一种表达前向和后向可迭代范围的简洁方法?
let range = forward ? (x+1)..<count : (0..<x).reversed()
for i in range {
// ...
}
这不起作用,因为CountableRange和ReversedRandomAccessCollection&lt;(CountableRange)&gt;不兼容。
答案 0 :(得分:2)
您需要使用类型橡皮擦。标准库提供AnyCollection
,它只是诀窍:
let range = forward ? AnyCollection((x+1)..<count) : AnyCollection((0..<x).reversed())
for i in range {
// ...
}