Swiftを学習する上で、1にも2にもついてまわるのが、オプショナルです。
Swiftでは、極力nilにアクセスしないように設計がなされています。
オプショナル束縛構文
オプショナルを利用する際、中身がnilかどうか判断してから処理を行いたい場合が頻出します。
その場合、下記のようにオプショナル束縛構文を利用すると非常に便利です。
let heisei: Int? = "27".toInt()
if let h = heisei {
// -> 27
println(h)
} else {
println("error")
}
上記の例だと、heiseiの値がnil以外の場合は条件は真となり、hにInt値が格納されます。
逆に、nilの場合は条件は偽となります。
オプショナルチェーン
オプショナルチェーンを利用すると、階層構造をもつオブジェクトをnil評価する際、大変便利です。
if let typeName: String = dorayaki?.an?.typeName {
// -> "うぐいす"
println(typeName)
} else {
println("error")
}
上記の例だと、typeNameの値がとれた場合は結果が真となります。
逆に、dorayaki、an、typeNameのいずれかがnilの場合、偽を返却します。
また、評価の途中でnilだと判定された場合、以降の評価は打ち切られ結果として偽を返します。
オプショナルを積極的に利用して、nilとサヨナラしたいですね。
学習に利用した本
前回紹介し忘れましたが、下記の本を参考に学習しました。
Swiftの仕様は、まだまだ変更がありますが、下記をベースに学習していれば間違いないと思います。