<分区>
在 Swift 中是否有一种简洁的方式来表达向前和向后的可迭代范围?
let range = forward ? (x+1)..<count : (0..<x).reversed()
for i in range {
// ...
}
这不起作用,因为 CountableRange 和 ReversedRandomAccessCollection<(CountableRange)> 不兼容。
<分区>
在 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 - 如何在 Swift 中表达前向或后向范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45873244/
相关文章:
ios - 无法将类型 '(_) -> ()?' 的值转换为预期的参数类型 '@convention(block) () -> Void'
ios - Swift:如何在 Sprite 上设置水平前后移动?
ios - 类型 '[Root]' 的值没有成员 'commit' 。我如何解码 JSON 根数组
Swift - 如何在没有segue的情况下在tableview中选择多行
dynamic - @objc 动态 var 在 Swift 4 中意味着什么
swift - 类型 'StorageMetadata' 的值没有成员 'downloadURL'
ios - 在 Swift 中测试 Optional 值后解包时出错
sql - 如何在 SWIFT 的 IOS CORE-DATA 请求中使用 SQL GROUP BY 和 SUM 函数?