Upgrade to Pro — share decks privately, control downloads, hide ads and more …

nseg92 kotlin Null Safety

D05b3b2abff3f73f249a01d60257bdde?s=47 hATrayflood
September 16, 2017

nseg92 kotlin Null Safety

D05b3b2abff3f73f249a01d60257bdde?s=128

hATrayflood

September 16, 2017
Tweet

Transcript

  1. 2017/9/16 NSEG Vol.92 kotlin Null Safety by ABE Hiroki aka

    hATrayflood
  2. y y 2017/9/16 NSEG Vol.92 お前 誰︖ by ABE Hiroki

    aka hATrayflood
  3. y y 2017/9/16 NSEG Vol.92 ⾃⼰紹介 ・名前︓アベヒロキ (@hATrayflood) ・職業︓⾃宅サーバ管理者 ・URL︓rayflood.org/diary-temp/

    ・地元︓東部町 by ABE Hiroki aka hATrayflood
  4. y y 2017/9/16 NSEG Vol.92 kotlin とは by ABE Hiroki

    aka hATrayflood
  5. y y 2017/9/16 NSEG Vol.92 JetBrains (IntelliJ) 開発 by ABE

    Hiroki aka hATrayflood
  6. y y 2017/9/16 NSEG Vol.92 alt java っぽい⾔語 by ABE

    Hiroki aka hATrayflood
  7. y y 2017/9/16 NSEG Vol.92 javaと相互 呼び出し可能 by ABE Hiroki

    aka hATrayflood
  8. y y 2017/9/16 NSEG Vol.92 android 公式⾔語 by ABE Hiroki

    aka hATrayflood
  9. y y 2017/9/16 NSEG Vol.92 基本的な⽂法 http://kotlinlang.org/docs/reference/basic-syntax.html by ABE Hiroki

    aka hATrayflood
  10. y y 2017/9/16 NSEG Vol.92 . ∧_∧ ( ´∀`)< ぬるぽ by

    ABE Hiroki aka hATrayflood
  11. y y 2017/9/16 NSEG Vol.92 ( ・∀・)  | | ガッ と    )   | | Y /ノ    

    ⼈ / )  <  >__Λ ∩ _/し' // V`Д´)/ ←>>1 (_フ⼺          / by ABE Hiroki aka hATrayflood
  12. y y 2017/9/16 NSEG Vol.92 を軽減できる 仕組み by ABE Hiroki

    aka hATrayflood
  13. y y 2017/9/16 NSEG Vol.92 基本 by ABE Hiroki aka

    hATrayflood
  14. y y 2017/9/16 NSEG Vol.92 val hoge: String by ABE

    Hiroki aka hATrayflood
  15. y y 2017/9/16 NSEG Vol.92 val fuga: String? by ABE

    Hiroki aka hATrayflood
  16. y y 2017/9/16 NSEG Vol.92 違いは︖ by ABE Hiroki aka

    hATrayflood
  17. y y 2017/9/16 NSEG Vol.92 末尾の ? by ABE Hiroki

    aka hATrayflood
  18. y y 2017/9/16 NSEG Vol.92 val hoge: String null不可 by

    ABE Hiroki aka hATrayflood
  19. y y 2017/9/16 NSEG Vol.92 val fuga: String? null許容 by

    ABE Hiroki aka hATrayflood
  20. y y 2017/9/16 NSEG Vol.92 val hoge: String = null

    コンパイルエラー by ABE Hiroki aka hATrayflood
  21. y y 2017/9/16 NSEG Vol.92 半ば型が違うもの として扱われる by ABE Hiroki

    aka hATrayflood
  22. y y 2017/9/16 NSEG Vol.92 fun setHoge(hoge: String) { this.hoge

    = hoge } by ABE Hiroki aka hATrayflood
  23. y y 2017/9/16 NSEG Vol.92 fun getFuga(): String? { return

    null } by ABE Hiroki aka hATrayflood
  24. y y 2017/9/16 NSEG Vol.92 メソッドの引数と 戻り値も同様 by ABE Hiroki

    aka hATrayflood
  25. y y 2017/9/16 NSEG Vol.92 基本2 by ABE Hiroki aka

    hATrayflood
  26. y y 2017/9/16 NSEG Vol.92 fun setHoge(hoge: String) { this.hoge

    = hoge } fun getFuga(): String? { return "fuga" } val fuga = getFuga() setHoge(fuga) by ABE Hiroki aka hATrayflood
  27. y y 2017/9/16 NSEG Vol.92 コンパイルエラー fugaはnullの可能性があるので nullを許容しないsetHoge() には渡せない by

    ABE Hiroki aka hATrayflood
  28. y y 2017/9/16 NSEG Vol.92 どうするか by ABE Hiroki aka

    hATrayflood
  29. y y 2017/9/16 NSEG Vol.92 val fuga = getFuga() if(fuga

    != null){ setHoge(fuga) } by ABE Hiroki aka hATrayflood
  30. y y 2017/9/16 NSEG Vol.92 nullチェック で渡せる by ABE Hiroki

    aka hATrayflood
  31. y y 2017/9/16 NSEG Vol.92 val fuga = getFuga() setHoge(fuga

    ?: "fuga") by ABE Hiroki aka hATrayflood
  32. y y 2017/9/16 NSEG Vol.92 ?: 演算⼦で nullの代替値を 設定できる by

    ABE Hiroki aka hATrayflood
  33. y y 2017/9/16 NSEG Vol.92 fun getHage(): Hage? { return

    Hage() } val hage = getHage() hage.setHoge("hoge") by ABE Hiroki aka hATrayflood
  34. y y 2017/9/16 NSEG Vol.92 これもコンパイルエラー hageはnullの可能性があるので setHoge()を実⾏できない ぬるぽの危険あり by

    ABE Hiroki aka hATrayflood
  35. y y 2017/9/16 NSEG Vol.92 どうするか by ABE Hiroki aka

    hATrayflood
  36. y y 2017/9/16 NSEG Vol.92 val hage = getHage() hage?.setHoge("hoge")

    by ABE Hiroki aka hATrayflood
  37. y y 2017/9/16 NSEG Vol.92 変数名の末尾に ? をつけると メソッド実⾏時に⾃動的に nullチェック

    nullだったらスルーする by ABE Hiroki aka hATrayflood
  38. y y 2017/9/16 NSEG Vol.92 ⼿動nullチェックでも可 ?: 演算⼦でも可能だけど 使い道はあんまりなさげ by

    ABE Hiroki aka hATrayflood
  39. y y 2017/9/16 NSEG Vol.92 禁じ⼿ by ABE Hiroki aka

    hATrayflood
  40. y y 2017/9/16 NSEG Vol.92 val hage = getHage() hage!!.setHoge("hoge")

    by ABE Hiroki aka hATrayflood
  41. y y 2017/9/16 NSEG Vol.92 変数名の末尾に !! をつけると メソッド実⾏時にnullチェック せず強引に実⾏します

    ぬるぽの危険あり by ABE Hiroki aka hATrayflood
  42. y y 2017/9/16 NSEG Vol.92 禁じ⼿2 by ABE Hiroki aka

    hATrayflood
  43. y y 2017/9/16 NSEG Vol.92 val hage = getHage() as

    Hage hage.setHoge("hoge") by ABE Hiroki aka hATrayflood
  44. y y 2017/9/16 NSEG Vol.92 as でキャストすると 強引に ? を外せます

    中⾝はnullもあるので ぬるぽの危険あり by ABE Hiroki aka hATrayflood
  45. y y 2017/9/16 NSEG Vol.92 まとめ by ABE Hiroki aka

    hATrayflood
  46. y y 2017/9/16 NSEG Vol.92 適切に使えば コンパイル時点で ぬるぽ回避可能 なのは⼤きい by

    ABE Hiroki aka hATrayflood
  47. y y 2017/9/16 NSEG Vol.92 抜け道もあるので 気を付けよう (特に外部ライブラリ) by ABE

    Hiroki aka hATrayflood
  48. y y 2017/9/16 NSEG Vol.92

  49. 最近の愛読書 2017/9/16 NSEG Vol.92 ※いずれもDL版もしくはsteam版 by ABE Hiroki aka hATrayflood

  50. by ABE Hiroki aka hATrayflood y y 2017/9/16 NSEG Vol.92

    ・リンク集 twitter @hATrayflood http://twitter.com/hATrayflood Kotlin Programming Language http://kotlinlang.org/ KotlinがAndroid開発⾔語になる https://www.infoq.com/jp/news/2017/05/android-kotlin 【!ってなんだ】KotlinとJava、nullとPlatformType【NullableにNotNull】 - Qiita http://qiita.com/RyotaMurohoshi/items/5fcc10d04fecd7304556 JavaプログラマがKotlinでつまづきがちなところ - Qiita http://qiita.com/koher/items/d9411a00986f14683a3f Kotlin : as, !, ? 周りのチートシート - i++ http://increment.hatenablog.com/entry/2015/10/31/090743 by ABE Hiroki aka hATrayflood
  51. y y