我是 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/