読者です 読者をやめる 読者になる 読者になる

山下寛人オフィシャルブログ

オイシックス株式会社 執行役員 システム本部長 山下寛人の公式ブログです。

Swiftのoptional

ブログ
Swiftをやり始めるときにまず覚えたほうがよさそうなものの1つにoptionalというものがあります。これは多分他の言語にはありません、おそらく。
(↑訂正:いろんな言語にありました)
これは何かというと、変数にnilを許すかどうかということです。nilJavaでいうnullです。
普通に宣言すると変数にはnilが入れられません。
var abc: String = nil
これはコンパイルエラーになります。
var abc?: String = nil
このようにクエスチョンマークをつけるとnilが可能になります。Javaだとnullがコンパイル時点ではチェックできずよくNullPointerExceptionでこけることがありますが、Swiftだとこのように強制できるということですね。
optionalはoptionalでない型とは別扱いなので、optionalを解除したいときはエクスクラメーションマークをつけます。
abc!

また、型のキャストでダウンキャストするときにエラーにするかnilにするかもクエスチョンマークを使った記法で制御できます。
if let movie = item as? Movie {
}
else if let song = item as? Song {
}
asがキャストです。上記はクエスチョンマークがついているのでダウンキャストできないときはnilになります。

このクエスチョンマークはSwingのソースによく出てくるのでまず覚えるとだいぶ読めるようになると思います。