Bool return 类型的可选闭包

Optional closure with Bool return type

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

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
}

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

Error: cannot convert value of type '()' to expected argument type 'Bool'

这是怎么回事?为什么 Swift 在需要 Bool 的地方看到类型 ()?

你的函数 self.doSomething()self.doSomethingElse() 不 return布尔值

而不是

func doSomething() { return true }

应该是这样的

func doSomething() -> Bool { return true }