【问题标题】:Closure in Swift?Swift 中的闭包?
【发布时间】:2018-09-13 16:04:02
【问题描述】:

所以我正在阅读一些代码,我看到一个尾随闭包,根据我的理解和一些谷歌搜索,当你有一个最终参数作为闭包时,似乎使用尾随闭包,因此你可以将它作为尾随闭包传递。

这让我很困惑。 我有一个A类和一个B类。B类继承自A类。在A类中,有一个函数C看起来像这样:

func C(text1: String, text2: String) -> SomeOddType{...}

现在在 B 类中,它覆盖了这个函数,但是主体是这样的:

override func C(text1: String, text2:String) -> SomeOddType{
 if let someVar = super.C(text:text1, text:text2){
  //some code that's not in the super method
  return someVar
  }
}

这是做什么的???我感到很困惑。它没有闭包作为参数,并且由于它已经调用了超级方法,覆盖版本中的代码是实现的附加组件?

【问题讨论】:

  • 你的问题中的闭包在哪里?
  • @RakeshaShastri 在 someVar 线上。我认为这是一个封闭的权利?使用 {} 调用函数后
  • @RakeshaShastri 它跑了。 NVM 我现在明白了。这是一个 if let... SO if 语句,该块属于 if。我的错。没有意识到它正在展开。
  • 哎呀 我得到了洞见,认为这是某种关闭。 @_@
  • 请尝试改进您的问题标题 - 阅读 How to Ask 寻求帮助

标签: swift closures


【解决方案1】:

这里没有尾随闭包,它只是 if 语句的块。表达式super.C(text: text1, text: text2) 有条件地绑定到新常量someVar。如果条件绑定成功,它将运行“//一些不在超级方法中的代码”代码块。

【讨论】:

    【解决方案2】:

    super.C(text:text1, text:text2) 返回SomeOddType,但它应该是可选的。 它分配给someVar

    【讨论】:

    • 但是函数调用之后的 {} 有什么作用呢?是 SomeOddType{//code},这是做什么用的?
    猜你喜欢
    • 1970-01-01
    • 2018-10-11
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-07
    相关资源
    最近更新 更多