![見出し画像](https://assets.st-note.com/production/uploads/images/52336539/rectangle_large_type_2_2f387319ea9e1a4d88d5367b39531897.jpeg?width=1200)
この世でいちばんわかりやすいiPhoneアプリ開発のおはなし【オプショナルとは?】
「値が無い状態」を許容する
ここでは、ある企業の株価を追跡するプログラムを考えます。 株価は経過的に変化する値なので、変数として定義すべきです。
var stockPrice = 0.0
まだ、この企業は上場しておらず、株式は公開前なので、変数stockPriceの既定値は便宜的に0.0を設定しました。 ところが、このコードを見ただけでは「実際の株価がゼロ」なのか、それとも「未公開で株価がない」のかを判断することはできません。
Swiftプログラミングではnilキーワードを使って、「値が無い状態」を示すことができます。 ただし、この変数stockPriceの値をnilに変更しようすると、コンパイラはエラーを報告します。
var stockPrice = 0.0
stockPrice = nil // error
これは、通常のデータ型として宣言された定数および変数は「値がない状態を許容しない」ことが原因です。 このコードは削除しておきます。
nilを許容する定数および変数を宣言するには、オプショナル と呼ばれる特殊なデータ型であることを明示します。 オプショナルであることを宣言するには、通常のデータ型名の後に疑問符?を追記します。
var stockPrice: Double? = 0.0
stockPrice = nil
変数stockPriceは「値がない状態」を許容するようになったので、既定値としてnilを設定できます。
var stockPrice: Double? = nil
なお、定数および変数の宣言時に「型がオプショナルである」ことを明示した場合、自動的に既定値はnilが設定されます。 そのため、= nilの記述は省略可能です。
var stockPrice: Double?
stockPrice // nil
合わせて読もう
オプショナルから値を取り出す方法について、こちらのページで解説しています。Swiftに「なぜ、オプショナルという仕組みが存在するのか」を理解しましょう。