swift - 在 Swift 中关闭?

标签 swift closures

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

这就是让我困惑的地方。 我有一个 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
  }
}

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

最佳答案

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

关于swift - 在 Swift 中关闭?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52317638/

相关文章:

ios - 如何在 Swift 3 的子类中覆盖 Init()

ios - 在 View Controller 之间传递数据

ios - 如何将 vCard 转换为 CNContact

rust - 为什么转移所有权后可以使用非捕获闭包?

javascript - 我可以向闭包添加方法吗

swift - didSelectRowAtIndexPath 中的数据在prepareForSegue 中不可用(swift)

ios - 生成不重复的随机 UIImage

swift - 闭包的强引用循环?

javascript - 创建具有值参数而不是引用的函数引用

parameters - 缺少带有 optional 参数的闭包参数