今回はnil判定によく使う if let の使い方について調べてみます。
if let を理解するための前提条件として、nil、とoptionalについて先に解説しています。最後まで是非読んで見てください。
目次
前提① Swiftは基本nilを許容しません。
nilとは
nilとはjavaなどでいうnulllのことで、値を持たないもの、存在がないもののようなイメージでOKです。
Swiftではnilが許容されていません。
1 2 3 4 5 |
var test: String print(test) //エラー testに値が入ってないから var age = 22 age = nil //エラー |
上のようなシンプルなものであれば、そもそもnilになることなんてないと思いますよね。
ただコード量や処理が多くなれば、どこかで問題が起きて、値が入ってないことは良く起こります。
そしてnilであればエラーが起こりアプリが落ちます。Swiftではこれを避けるためにOptional型が用意されています。
前提② Optional型を使えばnilを許容できる
Optional型とは
SwiftのOptional型は値のない変数などを扱うことのできるものです。
要はnilを扱えるものです。
書き方は、変数の後ろに?をつけます。
1 2 3 4 5 6 7 8 |
var test: String? print(test) //nil var age: Int? = 22 print(age) //Optional(22) age = nil print(age) //nil |
String?やInt?を使うことで、Optional型のStringやIntになり、上の例ではエラーだったのに、今回は大丈夫になりました。
Optional型では、
- 値がない -> nil
- 値がある -> Optional(22) など数字や文字列が入る
ということですね。
if let って何? いつ使うもの?
ここから本題のif letについて話していきます。
if let とは何か。
値がnilの可能性があるものを取り出したい時です。
上でみてきたように、nilを取り出そうとするとSwiftではエラーが起こりアプリが落ちます。if letはこれを避けるために使うものです。
if let -> 値がnilでなければ
のようなイメージです。
例①
1 2 3 4 5 6 7 8 |
var age: Int? age = 24 if let studentA_age = age { print(studentA_age) } // ageの値24が出力される |
例②
1 2 3 4 5 6 7 |
var age: Int? if let studentA_age = age { print(studentA_age) } // ageには何も入っていなくてnilなので、処理は行われない |
例①では、var ageに値が入っておりnilでないため、print(studentA_age)が行われている。
例②では、var ageに値が入っていなくてnilであるため、print(studentA_age)は行われていない。
例②はnilでエラーが起こるのを回避しています。
もしif let を使っていなければ②のコードではアプリが落ちます。
1 2 3 |
var age: Int print(age) //ageはnilだからエラーで落ちる |
まとめ: Swiftのif letはnilを回避できる
ここまで、Swiftのif letの使い方をみてきました。上の例で説明してきたようにnilの可能性があるものにif letを使うことで、もしnilであっても処理を行わず、アプリが落ちるのを回避できます。
アプリが落ちるのは何としても避けないといけないので、if letしっかり使っていきましょう〜
以上です。
未経験からエンジニアなりませんか?:社会人転職コース
参考:
https://docs.swift.org/swift-book/LanguageGuide/OptionalChaining.html