LoginSignup
0
2

More than 5 years have passed since last update.

オプショナルバリューについて

Posted at

オプショナルバリューについての備忘録

最近になって研修ぶりに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か判定している

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2