【问题标题】:Optional closure with Bool return typeBool 返回类型的可选闭包
【发布时间】: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


【解决方案1】:

您的函数 self.doSomething()self.doSomethingElse() 不返回 bool 值

代替

func doSomething() { return true }

应该是这样的

func doSomething() -> Bool { return true }

【讨论】:

    猜你喜欢
    • 2021-10-14
    • 2021-09-18
    • 1970-01-01
    • 2016-03-26
    • 2015-11-23
    • 2019-07-08
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多