标准库中的ObjectiveC.swift文件在第228行附近包含以下几行代码:

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

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

推荐答案

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

从2016年8月7日起,Swift 3 snapshot将提供该功能,

简而言之:

  • open级是accessible级和subclassable
  • public级是accessible级,但在public级之外是not subclassable

所以open是以前的public

"开放"现在只是"更公开而非公开",提供了一个非常简单和干净的模型.

在您的示例中,open var hashValue是一个可访问的属性,可以在NSObject个子类中重写.

有关更多示例和细节,请参阅SE-0117.

Swift相关问答推荐

传递给SWIFT ResultBuilder的闭包中结果类型的对象

当TextField变为空时,不会触发onChange

为什么枚举上的.allCases.forEach不是循环(继续和中断不起作用)?

如何写一个;风格;视图修饰符,它会影响特定类型的所有嵌套视图?

如何使用可搜索在搜索栏中搜索包括>或<?

Swift 数组拆分成重叠的块

如何从我的 macOS 应用程序打开 (.log) 文件?

当变量首次用于其自己的初始化时,如何清除变量...在初始化之前使用错误?

防止带有背景的文本扩展到 maxWidth

String(validatingUTF8:) 和 String(utf8String:) 之间有区别吗?

在主要参与者中启动分离任务和调用非隔离函数之间的区别

如何确定扩展中的具体类型?

任何使 ScrollView 像 List 一样执行更灵活的修饰符?

引用类型(类)不需要但 struct 需要的可识别 id

如何在 RxSwift 中获取 controlEvent 类型?

`IndexSet` 永远不会是空的?

仅在 Swift 中创建 Setter

swift 中的@property/@synthesize 类似功能

Objective-C 方法与可选需求方法 Swift 冲突

从 Swift 初始化程序调用方法