[解決済み] なぜ「Implicitly Unwrapped Optionals」を作るのか、それは値があることを知っていることを意味しているからです。
2022-03-19 10:52:54
質問
なぜ、通常の変数や定数を作成するのではなく、"Implicitly Unwrapped Optional"を作成するのでしょうか? アンラップできることが分かっているのであれば、そもそもなぜオプショナルを作成するのでしょうか? 例えば、なぜこうなのか。
let someString: String! = "this is the string"
よりも便利なものになる。
let someString: String = "this is the string"
オプショナルは定数や変数に『値がない』ことが許されることを示す」のであって、「オプショナルはその値が最初に設定された後、必ず値を持つことがプログラムの構造から明らかな場合がある」としたら、そもそもオプショナルにする意味は何なのでしょうか? オプショナルが必ず値を持つことが分かっているのであれば、それはオプショナルではないことになるのでは?
どうすれば解決するの?
構築や設定中はnilのプロパティを持つかもしれないが、その後は不変でnilでないオブジェクトの場合を考えてみよう(NSImageはしばしばこのように扱われるが、その場合にも時々変異させると便利である)。暗黙のうちにアンラップされたオプショナルは、安全性の損失が比較的少なく、そのコードをきれいにするでしょう(1つの保証が保持される限り、それは安全でしょう)。
(編集) はっきり言っておくと、通常のオプショナルがほとんど常に望ましいです。
関連
-
[解決済み】インスタンスメンバを型で使用することができない
-
[解決済み] スウィフト 2: !, ?-" オプション型「...」の値がアンラップされていない"
-
[解決済み] Swift presentViewController
-
[解決済み] Swift 3、Swift 4、それ以降で dispatch_sync, dispatch_async, dispatch_after などはどうすればいいですか?
-
[解決済み] タイプ 'StorageMetadata' の値には、メンバー 'downloadURL' がありません。
-
[解決済み] Swiftでコアデータを日付(時間だけでなく)でソートする
-
[解決済み] String型のenumを列挙する方法は?
-
[解決済み] SwiftでStringのサブストリングはどのように動作するか
-
[解決済み】Swiftで弱参照の配列を宣言するには?
-
[解決済み】Swiftの`let`と`var`の違いは何ですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「Fatal error: Unexpectedly found nil while unwrapping an Optional value "とはどういう意味ですか?
-
[解決済み] Swift - 呼出しの余分な引数
-
[解決済み] Swiftで乱数を生成する方法とは?
-
[解決済み] SwiftでString.Indexはどのように動作するのか
-
[解決済み] なぜ「Implicitly Unwrapped Optionals」を作るのか、それは値があることを知っていることを意味しているからです。
-
[解決済み] プログラミング言語Swiftで文字列のn文字目を取得する
-
[解決済み】==と===の違いについて
-
[解決済み】Swiftはドキュメント生成に対応しているのか?
-
[解決済み】Swiftの列挙型と関連する値の等質性をテストする方法
-
[解決済み] クラスは初期化子を持たない Swift