这是带闭包的函数声明
func isTextValid(input: String, completion: (result: Bool) -> ()) {
if input == "Hello" {
completion(result: true)
}
else {
completion(result: false)
}
}
当我像这样调用下面的函数时,它不会打印出正确的结果,即" false"而是打印"(0元素)"
isTextValid("hi", { (result) -> () in
println(result)
})
但是当我编写如下代码时,它的效果非常好。
isTextValid("hi", { (result) -> () in
if result == false {
println(result)
}
})
// OR
isTextValid("hi", { (result) -> () in
if result == false {
}
println(result)
})
我是Swift编程语言的新手,最近尝试使用快速语言,但是对闭包的语法和使用感到非常困惑。任何人都可以帮助解释这两种语法的区别,为什么它在第二种语法中工作正常但在第一种语法中没有问题。
提前致谢。快乐的编码。
答案 0 :(得分:1)
我认为您正在使用游乐场,您可以选择View -> Assistant Editor -> Show Assistant Editor
来显示真实的游戏机日志
isTextValid("hi", { (result) -> () in
println(result)
})
isTextValid("hi", { (result) -> () in
if result == false {
println(result)
}
})
isTextValid("hi", { (result) -> () in
if result == false {
}
println(result)
})
输出
假
假
假
此外,您可以像这样调用您的函数
isTextValid("hi"){
(result) -> () in
println(result)
}
isTextValid("hi"){
println($0)
}