具有Bool返回类型的可选闭包

时间:2017-09-13 08:11:19

标签: swift closures optional-parameters

我有一个带有可选闭包参数的方法,如下所示:

func when(_ name:String, state:State = .normal, closure:(() -> Bool)? = nil)
{
    ...
}
我打电话给他们是这样的:

when("I do something")
{
    if !self.doSomething() { return false }
    if !self.doSomethingElse() { return false }
    return true
}

这给了我一个编译时错误:

  

错误:无法转换类型'()'的值预期的参数类型   '布尔'

这里发生了什么?为什么Swift会看到一个预期Bool的类型()?

1 个答案:

答案 0 :(得分:3)

您的功能 self.doSomething() self.doSomethingElse()不会返回bool值

而不是

func doSomething() { return true }

应该是这样的

func doSomething() -> Bool { return true }