如何在 Swift 中表达向前或向后的范围?
How to express either forward or backward ranges in Swift?
在 Swift 中是否有一种清晰的方式来表达向前和向后的可迭代范围?
let range = forward ? (x+1)..<count : (0..<x).reversed()
for i in range {
// ...
}
这不起作用,因为 CountableRange 和 ReversedRandomAccessCollection<(CountableRange)> 不兼容。
您需要使用橡皮擦。标准库提供了 AnyCollection
,这就是诀窍:
let range = forward ? AnyCollection((x+1)..<count) : AnyCollection((0..<x).reversed())
for i in range {
// ...
}
在 Swift 中是否有一种清晰的方式来表达向前和向后的可迭代范围?
let range = forward ? (x+1)..<count : (0..<x).reversed()
for i in range {
// ...
}
这不起作用,因为 CountableRange 和 ReversedRandomAccessCollection<(CountableRange)> 不兼容。
您需要使用橡皮擦。标准库提供了 AnyCollection
,这就是诀窍:
let range = forward ? AnyCollection((x+1)..<count) : AnyCollection((0..<x).reversed())
for i in range {
// ...
}