Optional型とは?
・「nil」を代入できるデータ型
・「nil」とは「値が無い値」という特別なもの
・「nil」になる可能性もある値であるとも解釈できる?
記述例
// Optional型の宣言
let int: Int = nil // コンパイルエラーが発生する
let optionalInt: Int? = nil // データ型の後ろに「?」を付ける
// nil以外の値も代入できる
let optionalString: String? = "Demogorgon"
Optional型を使う時の注意点
・Optional型の変数や定数を参照する時は「nil」以外の値を取り出して使う!
・swiftは値が「nil」だとプログラムがクラッシュするので安全に取り出す方法がある!
【取り出す方法】
1.フォースアンラップ
2.オプショナルバインディング
3.デフォルト値
記述例
// Optiona型を宣言
let optionalString: String? = "Demogorgon"
// フォースアンラップ
let nonOptionalString: String = optionalString! // 後ろに「!」を付ける
print(nonOptionalString) // "Demogorgon"を取り出せる
// オプショナルバインディング
// optionalStringが「nil」で無ければアンラップされてnonOptionaStringに代入される
if let nonOptionalString = optionalString {
print(nonOptionalString)
}
// デフォルト値
// optionalStringが「nil」の場合は「Centaur」がgreekMonsterに代入される
let greekMonster: String = optionalString ?? "Centaur"
メモ
フォースアンラップは有無を言わさず値を取り出すの「nil」が代入されていたらプログラムがクラッシュする。
オプショナルバインディングは値が「nil」の場合にはアンラップされないのでより安全です。
独り言
どのような場合にプログラム内の使うのかは正直まだ全く分からない!