オプショナルは、空の状態を持てる変数だ。空はnilで表せる。
変数宣言の型の後に?を付ける
var hoge:Int?
hoge = nil
var hoge2:Int
hoge2 = nil // エラーになる。
オプショナルをそのまま使うとエラーになる。nilかどうかチェックしてnilでなければ変数に!をつけて値にアクセスできる。
var hogeOpt:Int? = 10
if hogeOpt != nil {
println(hogeOpt!) // 10が表示される
}
またこう言うふうにも書ける。オプショナルバインディングって言う。
var hogeOpt:Int? = 10
if let hoge = hogeOpt {
println(hoge) // 10が表示される
}
また、複数のオプショナルで上記のような処理を行うには、,で複数個指定する。
var hogeOpt1:Int? = 10
var hogeOpt2:Int? = 20
if let hoge1 = hogeOpt1, let hoge2 = hogeOpt2 {
println("hoge1=\(hoge1), hoge2=\(hoge2)") // "hoge1=10, hoge2=20"と表示
}
hogeOpt1、hogeOpt2どちらかがnilなら、falseになり表示されない。
コメント