Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

オプショナル型。 〜 なんとなく付ける ! ? 撲滅

29,672 views

Published on

2014/10/18の「iOS 8/Swift エンジニア勉強会」のLT資料です。

Published in: Software
  • Be the first to comment

オプショナル型。 〜 なんとなく付ける ! ? 撲滅

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

×