のObjectiveC.swift
標準ライブラリのファイルには、228 行目付近に次の数行のコードが含まれています。
extension NSObject : Equatable, Hashable {
/// ...
open var hashValue: Int {
return hash
}
}
open var
この文脈ではどういう意味ですか、またはopen
一般的にキーワードは何ですか?
ベストアンサー1
open
Swift 3の新しいアクセスレベルであり、
これは、2016 年 8 月 7 日以降の Swift 3 スナップショットおよび Xcode 8 ベータ 6 で利用できます。
要するに:
- クラス
open
は定義モジュールの外部からアクセスおよびサブクラス化open
できます。クラス メンバーは定義モジュールの外部からアクセスおよびオーバーライドできます。 - クラスは定義モジュールの外部からアクセス可能
public
ですが、サブクラス化することはできません。クラス メンバーは定義モジュールの外部からアクセス可能ですが、オーバーライドすることはできません。public
以前のSwiftリリースでは、アクセスが制限されていましopen
た。または、Chris Lattnerが言うように、public
public
SE-0177: パブリックアクセスとパブリックオーバーライド可能性を区別できるようにする:
「オープン」は単に「パブリックよりもパブリック」となり、非常にシンプルでクリーンなモデルを提供します。
あなたの例では、アクセス可能でサブクラスopen var hashValue
でオーバーライドできるプロパティです。NSObject
その他の例と詳細については、SE-0117。