LoginSignup
3
0

More than 5 years have passed since last update.

感嘆符以外に見えるようになりたい「?」「!」feat.optional型

Last updated at Posted at 2018-06-06

Swiftを初めて触ってから2年くらい経っているので
今更情けないんですが、ちゃんとわかっていないので、調べたことを整理しつつ記録します。

変数の型が明確に分けられる

例:optionalなString型

optional型はnilを許容します
変数の型が持つ通常の値➕nilの状態を保持できます。
宣言時に値を代入していないと、自動的にnilがセットされるのもoptional型の特徴です。

optional型には?がつきもの

optional.swit
var hoge: String?
hoge = nil

optional型は、型の後ろに「?」をつけます。
optional型は、nilが許容されるのでエラーにはなりません!

例:optionalでないString型

error.swit
var hoge: String
hoge = nil

これはエラーになります・・・
?が付いていないからです・・・

上記のことからも、SwiftはObjective-Cと違って、
通常の変数(optionalでない変数)がnilを持つことがないことがわかります。

つまりは、nilが入るのか入らないのかを「?」が教えてくれる:point_up:というわけですね・・・!?:vulcan:

(2018/06/12 追記しました。)
続きです。
「?」とか「!」とか、どういう時に使うのか、Swift書きながらやっと覚えてきた感ある今日このごろです(`・ω・´)

「!」もOptional型

「!」も「?」と同じく、nilを許容する役割をする。

「?」との違い

使用時には勝手にアンラップされる。
ただし、アンラップ時に変数がnilだった場合にエラーとなる。

アンラップとは

Optional型の変数を使う時に必要な処理。
 アンラップの方法は複数ある。

  • Forced Unwrapping(強制的アンラップ)
  • Optional Binding
  • Optional Chaining

(上記のアンラップ方法に関しての記載は、今回は割愛)

私的解釈図

スクリーンショット 2018-06-13 0.11.32.png

以上です。
ご指摘などありましたら、コメントいただけると幸いです。

3
0
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
3
0