Swift の「open」キーワードとは何ですか? 質問する

Swift の「open」キーワードとは何ですか? 質問する

ObjectiveC.swift標準ライブラリのファイルには、228 行目付近に次の数行のコードが含まれています。

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

open varこの文脈ではどういう意味ですか、またはopen一般的にキーワードは何ですか?

ベストアンサー1

openSwift 3の新しいアクセスレベルであり、

これは、2016 年 8 月 7 日以降の Swift 3 スナップショットおよび Xcode 8 ベータ 6 で利用できます。

要するに:

  • クラスopenは定義モジュールの外部からアクセスおよびサブクラス化openできます。クラス メンバーは定義モジュールの外部からアクセスおよびオーバーライドできます。
  • クラスは定義モジュールの外部からアクセス可能publicですが、サブクラス化することはできません。クラス メンバーは定義モジュールの外部からアクセス可能ですが、オーバーライドすることはできませんpublic

以前のSwiftリリースでは、アクセスが制限されていましopenた。または、Chris Lattnerが言うように、publicpublicSE-0177: パブリックアクセスとパブリックオーバーライド可能性を区別できるようにする:

「オープン」は単に「パブリックよりもパブリック」となり、非常にシンプルでクリーンなモデルを提供します。

あなたの例では、アクセス可能でサブクラスopen var hashValueでオーバーライドできるプロパティです。NSObject

その他の例と詳細については、SE-0117

おすすめ記事