最終更新:2017-05-29 (月) 03:30:23 (2496d)
Swift/オプショナル型
オプショナルを指定するとそのプロパティはnilの代入が許容される
オプショナル型
- 型名に?をつける
var 変数名:型名?
正確な表現
- Optional<T>
例
- 下記は同等
var str? = "test" var str:Optional<String> = "test"
アンラップ
- Optional<T>をT型に変換すること
- オプショナル型なのでメソッドや値の操作はできない
- 一時的に元の型として使うときはアンラップ(!)する
var msg:String? = "world" var str = "Hello " + msg!
初期値の設定 (??)
- オプショナル型がnilの場合に初期値を設定
var count:Int? var price = 150 * (count ?? 2)
オプショナル型
- 型名に?をつける
var 変数名:型名?
状態
- 「 有効なデータがある」
- 「 データをあえて設定しない」
- 「 データが管理されておらず、 読み出してはいけない無効 状態」
- 値にアクセスする前にnilチェックしてアンラップ(!)して値を取り出す
nilチェック
- if オプショナル変数 != nil
- if オプショナル変数 == 500
- 比較はアンラップせずに可能
オプショナルバインディング
- オプショナル型がnilでなければ値をアンラップして一時変数に代入し、nilの場合はfalseを返す
//varでも可 if let 定数 =オプショナル型{ //値がある print("\(定数)") }else{ //nilだった }
オプショナルチェイニング
- オブジェクトのプロパティ・メソッド・サブスクリプトなどにドットシンタックスでアクセスする時に、?をつけることで値がnilだった場合の実行時エラーを回避
- オプショナル型のところの変数に?をつける
a?.b?.c()
有値オプショナル? - !
var 変数名:型名!
- 値の参照時に自動的にアンラップが行われる
- nilチェックを必要としない記述が可能
- 参照されるまでに有効な値を設定する
- var p:Int!
- デフォルトでnil
- 内容がnilのときにアクセスするとプログラムが異常終了
メモ
- 有効な値が設定されていない時はnil
- 変数に有値オプショナル型を代入するとオプショナル型になる
メモ
- ラップ/アンラップ