Swift 将闭包用作While循环';s状态
我想使用闭包作为while循环的条件。这就是我所拥有的:Swift 将闭包用作While循环';s状态,swift,while-loop,closures,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(),它也不起作用 如果有任何帮助,我们将不胜感激。您需要使用()调用关闭,并且您的情况是错误的,因此在开始时是错误的(应该是x10)。改为
var x: Int = 0
var closure = {() -> Bool in return x > 10}
while closure {
x += 1
println(x) // never prints
}
它从不打印任何东西。如果我将其更改为closure()
,它也不起作用
如果有任何帮助,我们将不胜感激。您需要使用
()
调用关闭,并且您的情况是错误的,因此在开始时是错误的(应该是x<10
,而不是x>10
)。改为:
var x = 0
var closure: () -> Bool = { x < 10 }
while closure() {
++x
print(x)
}
var x=0
变量闭包:()->Bool={x<10}
whileclosure(){
++x
打印(x)
}
这里有两个问题
首先,在编写时,您的代码甚至不会编译。您需要将while closure
更改为while closure()
其次,更大的问题是,您的闭包逻辑是错误的x>10
从不返回true
,因为x
从不大于10
。把牌子翻过来就行了
斯威夫特2
var x=0
var closure={()->Bool返回x<10}
whileclosure(){
++x
打印(x)
}
Swift 1.2
var x=0
var closure={()->Bool返回x<10}
whileclosure(){
++x
println(x)
}
两个问题:
你的逻辑是颠倒的。您希望在x
小于10
时打印,因此:
当您直接调用闭包时,您可以像调用函数一样调用闭包,即使用括号
更新代码,使用Swift 2.0进行测试:
var x: Int = 0
var closure = {() -> Bool in return x < 10}
while closure() {
x += 1
print(x)
}
var x:Int=0
var closure={()->Bool返回x<10}
whileclosure(){
x+=1
打印(x)
}
利用缩写的机会使您的代码更加简洁、优雅
var x = 0
let closure = { x < 10 }
while closure() {
x++
}
x // 10
var x=0
let闭包={x<10}
whileclosure(){
x++
}
x//10
可以说,我可能更喜欢这样,因为var closure={val:Int->Bool返回val<10}
,然后<代码>而闭包(x){…
我更喜欢0中x的。。
var x: Int = 0
var closure = {() -> Bool in return x < 10}
while closure() {
x += 1
print(x)
}
var x = 0
let closure = { x < 10 }
while closure() {
x++
}
x // 10