以下是swift中闭包语法的区别

时间:2015-06-05 07:16:47

标签: ios swift closures completionhandler

  

这是带闭包的函数声明

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编程语言的新手,最近尝试使用快速语言,但是对闭包的语法和使用感到非常困惑。任何人都可以帮助解释这两种语法的区别,为什么它在第二种语法中工作正常但在第一种语法中没有问题。

提前致谢。快乐的编码。

1 个答案:

答案 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)
    }