導入
他の言語で「値が無い=null」がバグの温床になりがちなのに対し、Swiftは「無いかもしれない値」を型のレベルで区別します。それが Optional です。
説明
型のうしろに ? を付けると、「その値、または nil(値なし)」を表す Optional型 になります。
var nickname: String? = nil // いまは値なし
print(nickname) // nil
nickname = "たろちゃん" // あとから値を入れる
print(nickname) // Optional("たろちゃん")
String? は「文字列があるか、無い(nil)か」という型です。ふつうの String には nil を入れられません。この区別のおかげで、Swiftは「値が無いかもしれない箇所」をコンパイル時に教えてくれます。
ただしOptionalは「箱に包まれた」状態なので、そのままでは中身を使えません。中身を取り出すことを アンラップ(unwrap) と呼びます。次のレッスンで安全な取り出し方を学びます。
graph LR A["String?<br/>(Optional)"] -->|値がある| B["中身: たろちゃん"] A -->|値がない| C["nil"]
やってみよう
nickname に文字を入れたり nil に戻したりして、print の結果を見比べてみましょう。値があるときは Optional(...) と表示されるのが確認できます。
演習
var email: String? = nil を作り、そのまま print(email) して、nil と表示されることを確かめてください。
ヒント1を見る
var email: String? = nil と書きます。
ヒント2を見る
print(email)