swift - 使用闭包作为 While 循环的条件

标签 swift while-loop closures

我想使用闭包作为 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/

相关文章:

Java 让 JDialog 监听,直到用户点击 JButton

python - 使用带 while 循环的字典

php - PHP引擎是否优化循环内的匿名函数?

swift - 在 iOS 14 的 SwiftUI 中的主应用程序和 WidgetKit 之间共享数据

ios - navigationItem.setLeftBarButton() 不适用于旧版本

ios - 如何在 Datepicker 上只允许日期和日期?

php - 在 PHP 中,什么是闭包,为什么它使用 "use"标识符?

swift - Xcode SpriteKit 调用中的额外参数 'forReadingWithData"

php - 在 php while 循环的下一个循环中使用减少的变量

javascript - 如何修复我的 jQuery 代码中的闭包错误