[解決済み] Swiftの定数。構造体か列挙型か
2023-03-18 09:01:36
質問
定数を定義するのに、構造体とenumのどちらがいいのかわかりません。構造体かenumか。構造体は使用するたびにコピーされるのでしょうか?構造体について考えるとき
static let
を持つ構造体について考えるとき、それが常にコピーされるのは意味がないと私は思います。しかし、それがコピーされないなら、私が何を取るかは重要ではありません?
構造体やenumを選択する利点は何ですか?
Ray WenderlichはEnumを使えと言っている。しかし、私は正当な理由に欠ける。
どのように解決するのですか?
構造体も列挙体も動作します。例として
struct PhysicalConstants {
static let speedOfLight = 299_792_458
// ...
}
と
enum PhysicalConstants {
static let speedOfLight = 299_792_458
// ...
}
静的プロパティを定義する
PhysicalConstants.speedOfLight
.
Re: 構造体は使用するたびにコピーされますか?
どちらも
struct
と
enum
は値型なので、列挙型にも適用されるでしょう。しかし、それは
とは無関係です。
ここで
というのは、値を作成する必要が全くないからです。
静的プロパティ (これは
タイプ
プロパティとも呼ばれます) は型自体のプロパティであり、その型のインスタンスのものではありません。
Re: 構造体とenumの選択にはどのような利点がありますか?
で述べたように リンク先の記事 :
<ブロッククオートケースレス列挙を使用する利点は、誤ってインスタンス化されることがなく、純粋な名前空間として機能することです。
では、構造体の場合。
let foo = PhysicalConstants()
という型の(役に立たない)値を生成します。
PhysicalConstants
しかし
はケースなしの列挙の場合、コンパイルに失敗します。
let foo = PhysicalConstants()
// error: 'PhysicalConstants' cannot be constructed because it has no accessible initializers
関連
-
[解決済み] Objective-Cの定数
-
[解決済み] Java enumのメンバーを比較する:==またはequals()?
-
[解決済み] enumを列挙するには
-
[解決済み] intをenumにキャストするにはどうすればよいですか?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] C#でenumからint値を取得する
-
[解決済み] C#の[Flags]Enum属性の意味とは?
-
[解決済み] JavaScriptに定数はありますか?
-
[解決済み] カスタムイニシャライザを持つSwift enumはrawValueイニシャライザを失う
-
[解決済み] Swiftの関数パラメータとしてのプロトコルに準拠したクラス
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Swiftのグローバル定数ファイル
-
[解決済み] 非'@objc'メソッドは'@objc'プロトコルのオプション要件を満たしていない
-
[解決済み] Swift: PREPROCESSORフラグ(`#if DEBUG`など)を使ってAPIキーを実装する方法とは?
-
[解決済み] ボタンを無効化する
-
[解決済み] カスタムイニシャライザを持つSwift enumはrawValueイニシャライザを失う
-
[解決済み] Swiftでenumをプロトコルに準拠させるには?
-
[解決済み] Swiftで失敗しないイニシャライザーを実装するためのベストプラクティス
-
[解決済み] Swiftでオプショナルをダウンキャストする:as? タイプ、または as! タイプ?
-
[解決済み] Swiftの関数パラメータとしてのプロトコルに準拠したクラス
-
[解決済み] swiftでデータを16進文字列に変換する方法