オプショナル型(nil)

nil

データの値が存在しない可能性があるときに使用します。

PythonではNone、Javaではnullと同じ働きをします。

例)ユーザー登録で自宅の電話番号と携帯の電話番号はどちらかの値の入力でいいとき。

便利なnilですが、nilの値はデータ型では使用できません。

オプショナル型にする必要があります。

オプショナル型とは

オプショナル型
  • オプショナル型を使うことによりプログラムの安全性を高めることができます。
  • nilはオプショナル型にしか使用できないため、nilを使用するときは型名をオプショナル型にする必要があります。
  • データ型の型名に?をつけて使用します。例)Int?

これだとnilが使えません。

var optNum:Int = nil

オプショナル型(型名?)を使うとnilが使えます。

var optNum:Int? = nil

オプショナル型の書式

オプショナル型の書き方は2パターンあります。
  • 型名?
  • Optional<型名>
型名?
Optional<型名>
今までのデータ型オプショナルデータ型
Int型Int型?、Optional<Int型>
Float型Float型?、Optional<Float型>
Double型Double型?、Optional<Double型>
String型String型?、Optional<String型>
Bool型Bool型?、Optional<Bool型>
注目

データ型に?をつけるとオプショナルデータ型になりますが、性質は全くの別物になります。

オプショナルデータ型が、データ型を何かで包み込んでいるイメージです。

オプショナルデータ型は包まれているので、データを利用するときは包みを外す処理(アンラップ)が必須になります。

具体例

var optNum:Int? = 10
optNum = nil 
  • var 変数名:型名 = 値で変数を宣言していましたが、オプショナル型は型名に?をつけるだけです。
  • 通常通り値も入力することができます。
  • 例のような場合はInt型のオプショナル型なので「オプショナルInt型」と呼ばれます。
  • 変数名 = nilでnilを代入できます。
var optStr:Optional<String> = nil
  • var 変数名:Optional<型名> = 値でオプショナル型を宣言することができます。
  • 例のような場合はString型なので「オプショナルString型」と呼ばれます。
オプショナルのアンラップオプショナルのアンラップ