テックキャンプ124日目〜オプショナル型とアンラップ

kobasaです(´ω`*)
rubyとswiftの記述方法の違いが徐々に出てきましたね。
rubyでは気にしなくて良かったものが、swiftではしっかり定義しておかないとエラーになったり。
記述量が少ないこともrubyが初学者向けと言われる所以なのかなと思いました。

124日目の勉強内容

オプショナル型

変数宣言時に「?」を用いて宣言することで、値にnilを入れることができるようになる。
これをオプショナル型という。

var 変数名: String? //値を入れない(nil)
var 変数名: Int? = 5 //値を入れる
var 変数: Array<UIImage>?

オプショナル型は宣言時に値を入れないと、自動的にnilが代入される。
非オプショナル型(「?」がない変数宣言)はnilを代入するとエラーになる。

オプショナル型で定義される変数の値は全てOptional()の中に格納される。
⇨Optional(“値”)
変数を純粋な値として取り扱いたいときはOptionalを解除する必要がある。
解除することをアンラップという。

アンラップの種類

強制的アンラップ「!」

変数の値に関係なくアンラップが可能。nilも取り出されてしまうので注意!

var 変数: Int? = 5

print(変数)
//結果はOptional(5)

//強制的アンラップを使用する
print(変数!)
//結果は5

オプショナルバインディング

オプショナル型は値がnilのときはfalse、それ以外はtrueを返す。
主にif文でオプショナル型を用いて比較することをバインディングと呼ぶ。
値がnilかどうかを判断しながらアンラップすることができる。「!」不要。

 //オプショナル型。値の指定なしはnilが入り、falseが返るのでelseの処理へ
var num: Int?

//オプショナル型。値を指定したのでtrueが返りnum{}の処理へ
var num: Int? = 5 

if let sum = num{
	print("sum:"\(sum)")
}else{
	print("値が設定されていません")
}

オプショナルチェイニング

オプショナル型の変数の後に「?」をつけて、プロパティにアクセスしたりメソッドを呼び出す方法。
nilの可能性があるメソッドやプロパティに使用する。

オプショナル型の変数に値が入っていれば変数をアンラップ後、中身が取り出させる。
更にそれに続くプロパティを取得したり、メソッドの呼び出しが可能。
ただし、取得したプロパティやメソッドの戻り値はオプショナル型になる。
nilが入っている場合は、nilを返し処理を継続しない。

オプショナル型の変数?.メソッド()
オプショナル型の変数?.プロパティ
var Test: String? //オプショナル型を値を指定せずに定義
let Test2 = Test?.contains("Blog") //nilが返される

コメント

タイトルとURLをコピーしました