swift - 在 Swift 2.2 中,如何合并 for 循环语句?

标签 swift swift2

在 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/

相关文章:

ios - 无法在 bundle 中加载 Nib - 错误的 nibname

swift - 使用未解析的标识符 'checkForWin' 和 'aiDeciding()' 的重新声明无效

Swift 2.0 获取镜像父类(super class)属性

ios - 使用 instantiateViewController 时防止内存泄漏

swift - 如何在 UIAlertController 中添加 UIPickerView?

ios - Swift:查找 Firebase 数据库中是否存在成员

iOS 创建对象最佳实践

ios - Storyboard连接检查器中的方法名称发生更改

ios - 如何通过从另一个 ViewController 截取屏幕截图来在 Facebook 和 Twitter(社交框架)上分享?

ios - 在 Swift 中通过 Storyboard Segue 传递自定义初始化参数