オプショナルバリューについての備忘録
最近になって研修ぶりにswiftを触る機会が多いのですが、
「いまだにswiftって!とか?とかなんか多いしよくわからない」というような状態だったので、
改めて勉強してみました。初心者なので間違い多々あるかと思います!
オプショナルバリューって・・・?
オプショナル型でラッピングすることで変数にnilを入れられるようにする
基本的な書き方
test1.swift
var afternoon1:Optional<String> = "こんにちは!"
afternoon1 = nil //エラーにならない
//afternoon1と同じ処理を簡単に書くのが、型名の後に「?」をつける
var afternoon2:String? = "こんにちは!"
afternoon2 = nil //エラーにならない
「Optional < String>」を簡単にしたのが「?」
オプショナルバリューの使い方
test2.swift
let message1:String = "ハロー"
let message2:String? = "ワールド"
print(message1)
print(message2) //オプショナルバリューで出力しようとするのでStringで表示されない
print(message1 + message2) //片方がオプショナルなので連結できずエラー
//強制アンラップ:変数名の後ろに「!」をつける
print(message1 + message2!) //message2がnilの時はエラーになるのであまりよくない
「!」=強制アンラップになるので、むやみに使うのはよくない
オプショナルバインディングで安全にアンラップする
test3.swift
var str:String?
if let msg = str{
//strがnilでないならmsgにstrの値を代入して出力。msgにはアンラップされた状態で入っている
print(msg)
}else{
//strがnilの場合
print("オプショナルバリューはnil")
}
guard-else文でのオプショナルバインディングも値がnilか判定している