Swift中的“open”关键字是什么含义

0 投票
最新提问 3月 3 分类:IOS | 用户: 双鱼座 (300 分)

ObjectiveC.swift标准库文件包含大约228行代码,如下面几行:

extension NSObject : Equatable, Hashable {
  /// ...
  open var hashValue: Int {
    return hash
  }
}

在这种情况下open var是什么意思,open关键字是什么含义?

1个回答

0 投票
最新回答 3月 3 用户: yanxue (270 分)

open 是Swift3中的一个新的访问级别,介绍请看

它可用于2016年8月7日的Swift3快照和Xcode 8 beta 6。

简而言之:

  • open类在定义模块之外是可访问和子类化的。open类成员是可访问和可重写之外定义的模块。
  • public类是可访问的,但不能在定义模块之外子类化。public类成员是可访问的,但在定义模块之外不可重写。

正如Chris Lattner在SE-0177中所说的:允许区分公共访问和公共可覆盖性:

“开放”现在只是“比公众更公开”,提供了一个非常简单和干净的模型。

在您的示例中,open var hashValue是一个可访问的属性,可以在子类NSObject中覆盖。

更多的例子和细节,看看SE-0117。

欢迎来到编程助手,编程方面有什么不懂的问题可以尽管在这里提问,你将会收到热心爱好者的回答。
...