Submit Search
オプショナル型。 〜 なんとなく付ける ! ? 撲滅
•
50 likes
•
31,368 views
Tomoki Hasegawa
Follow
2014/10/18の「iOS 8/Swift エンジニア勉強会」のLT資料です。
Read less
Read more
1 of 38
Download now
Downloaded 66 times
More Related Content
オプショナル型。 〜 なんとなく付ける ! ? 撲滅
1.
オプショナル型。 なんとなく付ける !
? 撲滅 デジタルサーカス(株)⻑⾧長⾕谷川智希
2.
⾃自⼰己紹介 ともき ・⻑⾧長⾕谷川智希
/ デジタルサーカス(株) 副団⻑⾧長CTO ! ・開発系趣味: iOSアプリ開発, Web開発 ・その他趣味: レンタルカート, 電⼦子⼯工作(mbed), … Twitter Yo Beer?! @tomzoh TOMZOH TOMZOH
3.
⾃自⼰己紹介 ともき ・⻑⾧長⾕谷川智希
/ デジタルサーカス(株) 副団⻑⾧長CTO 新! 卒13年年⽬目 ・開発系趣味: iOSアプリ開発, Web開発 ・その他趣味: レンタルカート, 電⼦子⼯工作(mbed), … Twitter Yo Beer?! @tomzoh TOMZOH TOMZOH
4.
著書 2012 2013
2014 iOS 執筆中 Twitter: @tomzoh Yo: TOMZOH Beer?!: TOMZOH
5.
デジタルサーカス(株) ・Webサイト受託開発 ・スマホアプリ受託開発
・⾃自社サービス (PHP, CakePHP, Drupal) (iOS, Android) (http://appbuilder.jp) Twitter: @tomzoh Yo: TOMZOH Beer?!: TOMZOH
6.
Twitter: @tomzoh Yo:
TOMZOH Beer?!: TOMZOH
7.
今⽇日のテーマ: Swiftの 「Optional型。」
8.
Swift の String型
9.
Swift の String型には
nil は⼊入らない。 メソッドの返値とかでnilを返したいことってちょくちょくある…。
10.
Swift の String型には
nil は⼊入らない。 メソッドの返値とかでnilを返したいことってちょくちょくある…。 「nilを⼊入れたい場合、?を付ける。」
11.
Swift の String型には
nil は⼊入らない。 メソッドの返値とかでnilを返したいことってちょくちょくある…。 「nilを⼊入れたい場合、?を付ける。」
12.
nilを⼊入れたい場合、Optional<String>型を使う。
13.
nilを⼊入れたい場合、Optional<String>型を使う。 String?は…
14.
nilを⼊入れたい場合、Optional<String>型を使う。 String?は… Optional<String>の省省略略形!
15.
変数にnilが⼊入った! そしたらその変数を使うよ!
16.
Optional<String>型はそのままではString型としては使えない 元の型(String型)として使うために…
17.
Optional<String>型はそのままではString型としては使えない 元の型(String型)として使うために… _⼈人⼈人⼈人⼈人⼈人⼈人⼈人⼈人⼈人⼈人⼈人_
> アンラップする!! <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
18.
アンラップ ・Optional型で「ラップした」変数を元の型として使える様にす る処理理。
・⽅方法は4つある。 ・Forced Unwrapping ・Optional Chaining ・Optional Binding ・Implicitly Unwrapped Optional
19.
Forced Unwrapping ・強制的にアンラップして元の型を取り出す。
・変数名の後ろに「 ! 」を付ける。 ・Forced Unwrappingしたものは元の型になっている。 ・nilに対してForced Unwrappingすると実⾏行行時エラーになる。
20.
アンラップの⽅方法 ・Forced Unwrapping
強制的にアンラップして元の型を取り出す。 ・Optional Chaining ! ・Optional Binding ! ・Implicitly Unwrapped Optional
21.
Optional Chaining ・元の型のメソッドや添字を使える様にする。
・変数名の後ろに「 ? 」を付ける。 ・結果もOptional型で返される。(Chaining) ・変数がnilの場合そのアクセスは無視される。
22.
Optional Chaining ・結果もOptional型で返される。(Chaining)
・変数がnilの場合そのアクセスは無視される。 ・Optional ChainingしたものはやっぱりOptional型。
23.
アンラップの⽅方法 ・Forced Unwrapping
強制的にアンラップして元の型を取り出す。 ・Optional Chaining 元の型のメソッドや添字を使える様にする。 ・Optional Binding ! ・Implicitly Unwrapped Optional
24.
Optional Binding ・nilチェックをしてnilでなければ元の型を取り出す。
・let でも var でもOK。 ・unwrapped は String 型。 ・str が nil の場合は if の条件式の評価が false になる。 ・頻出構⽂文。
25.
アンラップの⽅方法 ・Forced Unwrapping
強制的にアンラップして元の型を取り出す。 ・Optional Chaining 元の型のメソッドや添字を使える様にする。 ・Optional Binding nilチェックをしてnilでなければ元の型を取り出す。 ・Implicitly Unwrapped Optional
26.
Implicitly Unwrapped Optional
・Implicitly Unwrapped Optional 型で宣⾔言する。 ・使⽤用時に⾃自動的にアンラップされて元の型になる。 ・このアンラップはForced Unwrapping。 ・nilの時に使⽤用されると実⾏行行時エラーになる。(=⾃自動的にアンラップ) ・取扱注意。
27.
アンラップの⽅方法 ・Forced Unwrapping
・強制的にアンラップして元の型を取り出す。 ・Optional Chaining ・元の型のメソッドや添字を使える様にする。 ・Optional Binding ・nilチェックをしてnilでなければ元の型を取り出す。 ・Implicitly Unwrapped Optional 使⽤用時に⾃自動的にアンラップされて元の型になる。
28.
ところで…
29.
Implicitly Unwrapped Optional
・Implicitly Unwrapped Optional 型で宣⾔言する。 ・使⽤用時に⾃自動的にアンラップされて元の型になる。 ・このアンラップはForced Unwrapping。 ・nilの時に使⽤用されると実⾏行行時エラーになる。(=⾃自動的にアンラップ) ・取扱注意。
30.
Implicitly Unwrapped Optional
・Implicitly Unwrapped Optional 型で宣⾔言する。 ・使⽤用時に⾃自動的にアンラップされて元の型になる。 ・このアンラップはForced Unwrapping。 ・nilの時に使⽤用されると実⾏行行時エラーになる。(=⾃自動的にアンラップ) ・取扱注意。
31.
Implicitly Unwrapped Optional
・Implicitly Unwrapped Optional 型で宣⾔言する。 ・使⽤用時に⾃自動的にアンラップされて元の型になる。 _⼈人⼈人⼈人⼈人⼈人⼈人⼈人⼈人⼈人⼈人⼈人_ > ⻑⾧長い!! <  ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
32.
省省略略形
33.
Optional型 - シンタックスシュガー
・省省略略形、シンタックスシュガー。
34.
Optional型 - シンタックスシュガー
・省省略略形、シンタックスシュガー。 ・アンラップに使う「 ? 」や「 ! 」とは別物。混同すると⼤大混乱。 ・世の中の混乱は⼤大抵この混同から発⽣生していると思う。 ・⾃自分もそうだった。 ・「 ? 」や「 ! 」を⾒見見たらどっちなのか考えて読もう。
35.
まとめ ・SwiftのString型(やInt型やBool型や…)はnilを値として取らない。 ・nilを扱いたい場合Optional型やImplicitly
Unwrapped Optional型 を使う。 ・省省略略形として元の型の名前の後ろに「 ? 」や「 ! 」を付けて表現できる。 ・Optional型を元の型として使うためには「アンラップ」する。 ・アンラップは末尾に「 ? 」「 ! 」を付けてその⽅方法を表現する。 ・Optional型の省省略略形としての「 ? 」「 ! 」とアンラップ⽅方法を表現する 「 ? 」「 ! 」は別物。
36.
オプショナル型 完全理理解!
37.
Happy Swifting!
38.
ありがとうございました。 @tomzoh
Download