1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【勉強メモ】オプショナルバインディング swift

Posted at

このページに訪れていただきありがとうございます。
このページでは実務でswiftを触ることが増えてきたので、勉強の一貫でオプショナルバインディングをアウトプットしました。
目新しい情報はないのですが、最後までお読みいただけますと幸いです。

前提の知識

・swiftにはオプショナル型とそれ以外の形がある
・swiftにはnilという何もないという値がある。(null的な?)
・nilはオプショナル型にしか格納できない値
・オプショナル型に格納されている値を使用する場合はアンラップする必要がある。
・アンラップには強制的な方法と安全な方法がある。
・安全なアンラップがオプショナルバインディング

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

optional型の値を安全に取り出す方法
ifやguardを使って変数がnilでないことを確認して、処理をする方法です。

オプショナルバインディングの書き方

if を使った方法

var optionalNum:Int? = 1
if let num = optionalNum {
  nilでないときの処理(numを使うことでアンラップされた状態として使用することができる)
} else {
 nilのときの処理
}

guardを使った方法

var optionalNum:Int? = 1
guard let num = optionalNum else {
  nilのときの処理
  return
} これ以降がnil出ないときの処理を記述することができる。

ifとguardの違いとしては、ifはアンラップされた定数はifブロックの中でしか使用することができない。
一方でguard文では外でも使用することができる。

【関係知識】オプショナル型の宣言方法

var num : Optional<型> = 格納する値
var num:Int?

【関係知識】強制的なアンラップのやり方

オプショナル型の変数を取り出すときに!をつけることでアンラップすることができる。

var num:Int?
num = 1
var total = num! + 1
print(total) //2となる

なぜ強制的アンラップを注意しないといけないのか

強制的なアンラップはnilが入っていようがいないが強制的にアンラップするため、確実にnilが入っていないときのみ利用できる。
そのため、nilが入っていた場合はプログラムにエラーが出てしまう。
よくつかうのは@IBOutletで部品を宣言するときに使う印象

参考文献
https://mogi0506.com/swift-optional/
https://thinkit.co.jp/article/13489

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?