[解決済み] Swiftの'open'キーワードは何ですか?
2022-03-14 17:10:24
質問
その
ObjectiveC.swift
ファイルには、標準ライブラリの228行目あたりに次のような数行のコードが含まれています。
extension NSObject : Equatable, Hashable {
/// ...
open var hashValue: Int {
return hash
}
}
とは何ですか?
open var
はこの文脈で何を意味するのか、あるいは
open
というキーワードがありますが、一般的にはどうなのでしょうか?
どのように解決するのですか?
open
は Swift 3 で実装された新しいアクセスレベルです。
の
2016年8月7日からのSwift 3スナップショットで利用可能です。 およびXcode 8 beta 6で使用できます。
要するに
-
An
open
クラスは アクセス可能 と サブクラス化可能 の外側で を定義するモジュールです。またopen
クラスのメンバは アクセス可能 と オーバーライド可能 を定義するモジュールの外側に置く。 -
A
public
クラスは アクセス可能 しかし サブクラス化できない の外側で を定義するモジュールです。Apublic
クラスメンバは アクセス可能 しかし オーバーライド不可 定義されたモジュールの外側で
そこで
open
は何ですか
public
以前の
Swiftのリリースと
public
が制限されました。
あるいは、Chris Lattnerが言うように
SE-0177 公開アクセスと公開オーバーライド可能を区別できるようにする
:
"open "は単に "more public than public "となり、非常にシンプルでクリーンなモデルを提供するようになりました。
あなたの例では
open var hashValue
は、アクセス可能なプロパティで、オーバーライドすることができます。
NSObject
のサブクラスがあります。
その他の例や詳細については、以下のサイトをご覧ください。 SE-0117 .
関連
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] なぜ ++[[]][+[] +[+[]] は "10" という文字列を返すのでしょうか?
-
[解決済み] C言語における「static」の意味とは?
-
[解決済み] SwiftからObjective-Cのコードを呼び出すにはどうしたらいいですか?
-
[解決済み] Swiftで#pragmaマーク?
-
[解決済み] PHPの文字列で、シングルクオートとダブルクオートの違いは何ですか?
-
[解決済み] Pythonの "at"(@)マークは何をするものですか?
-
[解決済み] YAMLです。YAML の文字列には引用符が必要ですか?
-
[解決済み】定義と宣言の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Xcode 8 シェルスクリプト呼び出しエラー
-
[解決済み] Swift 5でXOR?
-
[解決済み] Swift: print() vs println() vs NSLog()
-
[解決済み] SwiftUIのFacebookログイン。FacebookのIDをビューに戻すには?
-
[解決済み] SwiftはPass By ValueかPass By Referenceか
-
[解決済み] Swiftのコンストラクタ
-
[解決済み] SwiftでStringのサブストリングはどのように動作するか
-
[解決済み】==と===の違いについて
-
[解決済み】なぜ、Swiftの文字列では、?のような絵文字が奇妙に扱われるのですか?
-
[解決済み】Swiftにアクセス修飾語はあるのか?