1. ホーム
  2. swift

[解決済み] なぜ「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つの保証が保持される限り、それは安全でしょう)。

(編集) はっきり言っておくと、通常のオプショナルがほとんど常に望ましいです。