Swift 为什么,循环在这里无限期地运行?
我试图以相反的顺序迭代,但在while循环中它无限期运行并打印4Swift 为什么,循环在这里无限期地运行?,swift,Swift,我试图以相反的顺序迭代,但在while循环中它无限期运行并打印4 func countDown(start: Int) -> AnyIterator<Int> { var i = start return AnyIterator { guard i > 0 else { return nil } i -= 1 return i } } let i = 5 while let x = countDown(start: i).next()
func countDown(start: Int) -> AnyIterator<Int> {
var i = start
return AnyIterator {
guard i > 0 else { return nil }
i -= 1
return i
}
}
let i = 5
while let x = countDown(start: i).next() {
print("Element x: \(x)" ) // It iterates indefinitely.
}
func倒计时(开始:Int)->AnyIterator{
变量i=开始
返回任意迭代器{
保护i>0其他{返回nil}
i-=1
返回i
}
}
设i=5
而让x=倒计时(开始:i).next(){
print(“元素x:\(x)”//它无限期地迭代。
}
因为函数每次都被调用,而您每次都在创建一个新的迭代器
let i = 5
let it = countDown(start: i)
while let x = it.next() {
print("Element x: \(x)" ) // It no longer iterates indefinitely.
}
可能是因为您一直在
while
条件下重新启动迭代器