一尘不染

Swift中的'open'关键字是什么?

swift

ObjectiveC.swift来自标准库的文件包含围绕228行的以下几行代码:

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

open var在这种情况下是什么意思,或者open通常是什么关键字?


阅读 213

收藏
2020-07-07

共1个答案

一尘不染

open 是Swift 3中的新访问级别,随实现而引入

从2016年8月7日开始,Swift 3快照和Xcode 8 beta 6都可以使用它。

简而言之:

  • 在定义模块之外, 可以访问可继承 一个open类。一类成员是 可访问可重写 的定义模块的外部。 open
  • 在定义模块之外, 可以访问 一个public类,但 不能将其子类化 。甲类成员是 可访问的 ,但 不可重写 的定义模块的外部。 public

那么open是什么public曾经在以前的版本雨燕和的访问public受到限制。或者,如Chris Lattner在
SE-0177中所述:允许区分公共访问权限和公共可重写性

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

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

有关更多示例和详细信息,请查看SE-0117

2020-07-07