swift - 在 for 循环中处理负索引的优雅 Swift 方法

标签 swift for-loop swift2 swift3

我是 Swift 新手,正在尝试找到一种优雅的方法来处理可能为负数的 for 循环变量。

func funForLoops(_ loop:Int) {
    for i in 0..<loop {
        print("Hello \(i)")
    }
}
funForLoops(1) // prints Hello 0
funForLoops(0) // doesn't execute
funForLoops(-1) // runtime error "fatal error: Can't form Range with  upperBound < lowerBound"

有没有比这更简单的方法来检查:

if (loop >= 0) {
    for i in 0..<loop {
        print("Hello \(i)")
    }
}

或者这个:

for i in 0..<(loop >= 0 ? loop : 0) {

最佳答案

假设您的意思是“如果它是负数,则不执行任何操作”(这并不明显;您可能意味着“递减”,这就是为什么如果不是异常(exception),它会含糊不清)您想要的语法是:

for i in 0..<max(0, loop) { }

在必要时这是一个很好的语法,但在大多数情况下,如果该值可能出人意料地为负数,则说明程序结构存在更深层次的问题,应该尽快解决该问题。

关于swift - 在 for 循环中处理负索引的优雅 Swift 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39652075/

相关文章:

xcode - 在编辑器中折叠计算属性和属性观察器?

ios - 未调用 Swift 协议(protocol)扩展

linux - Shell for 循环,在声明处停止

ios - 从 '()' 转换为无关类型 'String' 总是失败

ios - 发件人:按下 UIBarButtonItem 时 AnyObject 崩溃

swift - 证明光标位置是否在 NSButton 的框架内

带有循环列表的Python调用函数

javascript - 如何实现一个函数,当传入一个密集的字符串时返回,否则返回 false?

swift - 在 Swift 中向数组中插入一个新元素

ios - 如何在 UIwebview 上播放 vimeo 视频而不是全屏 ios swift 2.0