【发布时间】:2017-09-13 08:11:19
【问题描述】:
我有一个带有可选闭包参数的方法,如下所示:
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 的地方看到类型 ()?
【问题讨论】:
-
@dhin 的回答毕竟是对的!我有一些方法错过了
-> Bool返回类型。 -
试试这个 cz 你的闭包返回 bool 但不是你的函数
-
@Ishika 但是我的
when方法本身不应该返回任何东西,只有闭包才会返回。 -
请注意(事实证明)您的问题与可选闭包完全无关。真正的问题在于您 not 显示的功能。因此,标题具有误导性,而且(即使 您的 问题已解决)问答对未来的读者来说或多或少毫无用处。
标签: swift closures optional-parameters