OptionalでNullPointerExceptionが無くなるのかな?
SwiftにはOptionalという型があって、こいつだけがnilを許容するとのこと。
var serverResponseCode: Int? = 404
serverResponseCode = nil
こんな風に、"?"がOptional型を表すシンタックスシュガーになっていてOptional
Optional Binding
Optionalの良いなと思った点が"Optional Binding"
var possibleNumber = "123"
if let actualNumber = possibleNumber.toInt() {
println("'(possibleNumber)' has an integer value of (actualNumber)")
} else {
println("'(possibleNumber)' could not be converted to an integer")
}
// prints "'123' has an integer value of 123"
possibleNumberがStringで、toIntという数値に変換するメソッドをコールしたとき戻り値はOptional
これをしない場合、"!"を付けることで強制的に参照することができるようですがそれをするとjavaで言う所のNullPointerException的な状態が起こり得ます。ので値のチェックを忘れないでコンパイル時に気づけるOptionalの仕様はいいかもなと思いました。
println("'(possibleNumber)' has an integer value of (actualNumber!)")
元々、Object-Cではnilオブジェクトを参照したときエラーにならないで無視される仕様だったんですね。
便利そうで、潜在的なバグを生みやすいということでSwiftの仕様の方が良さそうです。