我想使用闭包作为 while 循环的条件。这是我的:
var x: Int = 0
var closure = {() -> Bool in return x > 10}
while closure {
x += 1
println(x) // never prints
}
它从不打印任何东西。如果我将它更改为 closure()
,它也不起作用。
如有任何帮助,我们将不胜感激。
最佳答案
这里有两个问题。
首先,如所写,您的代码甚至无法编译。您需要将 while closure
更改为 while closure()
。
其次,更大的问题是,您的closure
逻辑是错误的。 x > 10
永远不会返回 true
,因为 x
永远不会大于 10
。将标志翻转过来,它就会起作用。
swift 2
var x = 0
var closure = { () -> Bool in return x < 10 }
while closure() {
++x
print(x)
}
swift 1.2
var x = 0
var closure = { () -> Bool in return x < 10 }
while closure() {
++x
println(x)
}
关于swift - 使用闭包作为 While 循环的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31466339/