在 Swift 2.2 中,C 风格的 for 语句已被弃用,因此我修改了以下 for 循环:
for var idx=data.count-1; idx>=0; --idx
进入
for idx in (0...data.count-1).reverse() // <--- new statement
但是,我发现,当data.count
在执行期间为 0,新语句将崩溃并出现错误 fatal error: Can't form range with end < start
.
是否有针对这种情况的最佳/标准编码方式?
附言我想我必须使用不同种类的循环/语法来替换我统一的 C 风格循环。欢迎对此提出任何进一步的评论或建议。
最佳答案
创建一个范围为
0 ... data.count-1
如果 data.count
则以运行时异常终止为零。这是
通常最好使用 ..<
运算符使一个范围
在你的例子中省略了它的上限值:
0 ..< data.count
这适用于 data.count == 0
以及创建一个空的
在这种情况下的范围。这适用于
向前和向后迭代:
for idx in 0 ..< data.count { ... }
for idx in (0 ..< data.count).reverse() { ... }
(当然 stride()
是第二种情况的明智选择。)
关于swift - 在 Swift 2.2 中,如何合并 for 循环语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36244732/