Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 为什么,循环在这里无限期地运行?_Swift - Fatal编程技术网

Swift 为什么,循环在这里无限期地运行?

Swift 为什么,循环在这里无限期地运行?,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()

我试图以相反的顺序迭代,但在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() {
    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
条件下重新启动迭代器