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の仕様は、まだまだ変更がありますが、下記をベースに学習していれば間違いないと思います。