标准库中的
ObjectiveC.swift
文件包含第228行的以下几行代码:
extension NSObject : Equatable,Hashable { /// ... open var hashValue: Int { return hash } }
在这个上下文中,open var是什么意思,或者一般是什么是open关键字?
open是Swift 3中的一个新的访问级别,介绍与实现
的
的
> SE-0117 Allow distinguishing between public access and public overridability
它可用于2016年8月7日的Swift 3快照,
和Xcode 8 beta 6。
简而言之:
>一个开放类是可访问的,并且可以在子类之外
定义模块。一个开放的类成员是可访问和
可在所述定义模块外部覆盖。
>一个公共类是可访问的,但不能在子类之外
定义模块。公共类成员可访问,但是
不能在定义模块之外覆盖。
所以开放是公众以前在以前
Swift的释放和公众的访问受到限制。
或者,正如克里斯·拉特纳所说
SE-0177: Allow distinguishing between public access and public overridability:
“open” is now simply “more public than public”,providing a very simple and clean model.
在你的例子中,打开var hashValue是一个可访问的属性,可以在NSObject子类中重写。
有关更多示例和详细信息,请查看SE-0117。