-1

这是我的闭包函数声明

func isTextValid(input: String, completion: (result: Bool) -> ()) {
    if input == "Hello" {
        completion(result: true)
    }
    else {
        completion(result: false)
    }
}

当我像这样调用下面的函数时,它不会打印“假”的正确结果,而是打印“(0个元素)”

isTextValid("hi", { (result) -> () in
    println(result)
})

但是当我编写如下代码时,它工作得非常好。

isTextValid("hi", { (result) -> () in
   if result == false {
      println(result)
   }
})

// 或者

isTextValid("hi", { (result) -> () in
   if result == false {

   }
   println(result)
})

我是 Swift 编程语言的新手,最近尝试使用 Swift 语言,但对闭包的语法和使用完全感到困惑。任何人都可以帮助解释这两种语法有什么区别,为什么它在第二种语法中可以正常工作,但在第一种语法中不能正常工作。

提前致谢。快乐编码。

4

1 回答 1

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)
    }
于 2015-06-05T07:31:53.563 回答