Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
nseg92 kotlin Null Safety
Search
hATrayflood
September 16, 2017
Programming
68
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
nseg92 kotlin Null Safety
https://nseg.connpass.com/event/67001/
hATrayflood
September 16, 2017
Transcript
51 slides
2017/9/16 NSEG Vol.92 kotlin Null Safety by ABE Hiroki aka
hATrayflood
y y 2017/9/16 NSEG Vol.92 お前 誰︖ by ABE Hiroki
aka hATrayflood
y y 2017/9/16 NSEG Vol.92 ⾃⼰紹介 ・名前︓アベヒロキ (@hATrayflood) ・職業︓⾃宅サーバ管理者 ・URL︓rayflood.org/diary-temp/
・地元︓東部町 by ABE Hiroki aka hATrayflood
y y 2017/9/16 NSEG Vol.92 kotlin とは by ABE Hiroki
aka hATrayflood
y y 2017/9/16 NSEG Vol.92 JetBrains (IntelliJ) 開発 by ABE
Hiroki aka hATrayflood
y y 2017/9/16 NSEG Vol.92 alt java っぽい⾔語 by ABE
Hiroki aka hATrayflood
y y 2017/9/16 NSEG Vol.92 javaと相互 呼び出し可能 by ABE Hiroki
aka hATrayflood
y y 2017/9/16 NSEG Vol.92 android 公式⾔語 by ABE Hiroki
aka hATrayflood
y y 2017/9/16 NSEG Vol.92 基本的な⽂法 http://kotlinlang.org/docs/reference/basic-syntax.html by ABE Hiroki
aka hATrayflood
y y 2017/9/16 NSEG Vol.92 . ∧_∧ ( ´∀`)< ぬるぽ by
ABE Hiroki aka hATrayflood
y y 2017/9/16 NSEG Vol.92 ( ・∀・) | | ガッ と ) | | Y /ノ
⼈ / ) < >__Λ ∩ _/し' // V`Д´)/ ←>>1 (_フ⼺ / by ABE Hiroki aka hATrayflood
y y 2017/9/16 NSEG Vol.92 を軽減できる 仕組み by ABE Hiroki
aka hATrayflood
y y 2017/9/16 NSEG Vol.92 基本 by ABE Hiroki aka
hATrayflood
y y 2017/9/16 NSEG Vol.92 val hoge: String by ABE
Hiroki aka hATrayflood
y y 2017/9/16 NSEG Vol.92 val fuga: String? by ABE
Hiroki aka hATrayflood
y y 2017/9/16 NSEG Vol.92 違いは︖ by ABE Hiroki aka
hATrayflood
y y 2017/9/16 NSEG Vol.92 末尾の ? by ABE Hiroki
aka hATrayflood
y y 2017/9/16 NSEG Vol.92 val hoge: String null不可 by
ABE Hiroki aka hATrayflood
y y 2017/9/16 NSEG Vol.92 val fuga: String? null許容 by
ABE Hiroki aka hATrayflood
y y 2017/9/16 NSEG Vol.92 val hoge: String = null
コンパイルエラー by ABE Hiroki aka hATrayflood
y y 2017/9/16 NSEG Vol.92 半ば型が違うもの として扱われる by ABE Hiroki
aka hATrayflood
y y 2017/9/16 NSEG Vol.92 fun setHoge(hoge: String) { this.hoge
= hoge } by ABE Hiroki aka hATrayflood
y y 2017/9/16 NSEG Vol.92 fun getFuga(): String? { return
null } by ABE Hiroki aka hATrayflood
y y 2017/9/16 NSEG Vol.92 メソッドの引数と 戻り値も同様 by ABE Hiroki
aka hATrayflood
y y 2017/9/16 NSEG Vol.92 基本2 by ABE Hiroki aka
hATrayflood
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
y y 2017/9/16 NSEG Vol.92 コンパイルエラー fugaはnullの可能性があるので nullを許容しないsetHoge() には渡せない by
ABE Hiroki aka hATrayflood
y y 2017/9/16 NSEG Vol.92 どうするか by ABE Hiroki aka
hATrayflood
y y 2017/9/16 NSEG Vol.92 val fuga = getFuga() if(fuga
!= null){ setHoge(fuga) } by ABE Hiroki aka hATrayflood
y y 2017/9/16 NSEG Vol.92 nullチェック で渡せる by ABE Hiroki
aka hATrayflood
y y 2017/9/16 NSEG Vol.92 val fuga = getFuga() setHoge(fuga
?: "fuga") by ABE Hiroki aka hATrayflood
y y 2017/9/16 NSEG Vol.92 ?: 演算⼦で nullの代替値を 設定できる by
ABE Hiroki aka hATrayflood
y y 2017/9/16 NSEG Vol.92 fun getHage(): Hage? { return
Hage() } val hage = getHage() hage.setHoge("hoge") by ABE Hiroki aka hATrayflood
y y 2017/9/16 NSEG Vol.92 これもコンパイルエラー hageはnullの可能性があるので setHoge()を実⾏できない ぬるぽの危険あり by
ABE Hiroki aka hATrayflood
y y 2017/9/16 NSEG Vol.92 どうするか by ABE Hiroki aka
hATrayflood
y y 2017/9/16 NSEG Vol.92 val hage = getHage() hage?.setHoge("hoge")
by ABE Hiroki aka hATrayflood
y y 2017/9/16 NSEG Vol.92 変数名の末尾に ? をつけると メソッド実⾏時に⾃動的に nullチェック
nullだったらスルーする by ABE Hiroki aka hATrayflood
y y 2017/9/16 NSEG Vol.92 ⼿動nullチェックでも可 ?: 演算⼦でも可能だけど 使い道はあんまりなさげ by
ABE Hiroki aka hATrayflood
y y 2017/9/16 NSEG Vol.92 禁じ⼿ by ABE Hiroki aka
hATrayflood
y y 2017/9/16 NSEG Vol.92 val hage = getHage() hage!!.setHoge("hoge")
by ABE Hiroki aka hATrayflood
y y 2017/9/16 NSEG Vol.92 変数名の末尾に !! をつけると メソッド実⾏時にnullチェック せず強引に実⾏します
ぬるぽの危険あり by ABE Hiroki aka hATrayflood
y y 2017/9/16 NSEG Vol.92 禁じ⼿2 by ABE Hiroki aka
hATrayflood
y y 2017/9/16 NSEG Vol.92 val hage = getHage() as
Hage hage.setHoge("hoge") by ABE Hiroki aka hATrayflood
y y 2017/9/16 NSEG Vol.92 as でキャストすると 強引に ? を外せます
中⾝はnullもあるので ぬるぽの危険あり by ABE Hiroki aka hATrayflood
y y 2017/9/16 NSEG Vol.92 まとめ by ABE Hiroki aka
hATrayflood
y y 2017/9/16 NSEG Vol.92 適切に使えば コンパイル時点で ぬるぽ回避可能 なのは⼤きい by
ABE Hiroki aka hATrayflood
y y 2017/9/16 NSEG Vol.92 抜け道もあるので 気を付けよう (特に外部ライブラリ) by ABE
Hiroki aka hATrayflood
y y 2017/9/16 NSEG Vol.92
最近の愛読書 2017/9/16 NSEG Vol.92 ※いずれもDL版もしくはsteam版 by ABE Hiroki aka hATrayflood
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
y y
More Decks by hATrayflood
See All by hATrayflood
NSEG 19/08 chromiumカスタムビルド
h_rayflood
1
210
NSEG 19/08 chromiumブランディングとローカライズ
h_rayflood
0
270
NSEG 19/08 chromium内部構造とIPC
h_rayflood
0
290
NSEG 19/08 Web VideoMarkの紹介
h_rayflood
1
170
glnagano-python peewee
h_rayflood
0
400
nseg100 pythonでwebサーバ
h_rayflood
0
35
nseg77-vol1 USBブートのインストーラを作る
h_rayflood
0
100
nseg77-vol2 野良リポジトリを作る
h_rayflood
0
54
Other Decks in Programming
See All in Programming
ローカルLLMの基本と近況 2611 / Local LLM basics and recent situation 2611
kishida
2
430
AIが実装を担う時代の「技術設計」と「チームマネジメント」
kamina_zzz
2
270
선언형 햅틱 라이브러리 진동을 소개합니다
l2hyunwoo
1
310
Zero-Tap Sign-In対応、結局何をすればいいの?
mitohato14
0
2.1k
どうしても Eloquent でリポジトリパターンをやりたいんだ #phpcon_niigata / phpcon-niigata-2026
shogogg
0
300
プロジェクトコードをキレイキレイしよう!暗黙的な参照を読み解く静的解析
ostk0069
0
210
React Native経験者が Flutterを30⽇間触って驚いたこと
3saito
0
190
graphql-ruby を Spinel で速くしようとした話
mtsmfm
0
150
Modernizing iOS Apps
seyfoyun
0
160
疎結合とは何か?ソフトウェア設計における結合バランスについて考える #phpcon_niigata
kajitack
0
160
SODA - FACT BOOK(JP)
sodainc
1
40k
学びを記事・スライド・Xへ高速展開する― AI-assisted Learning Loopで回すコンテンツ生成術
ochtum
0
210
Featured
See All Featured
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
2
520
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
660
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
530
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
The Invisible Side of Design
smashingmag
301
52k
How to make the Groovebox
asonas
2
2.6k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8.2k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Are puppies a ranking factor?
jonoalderson
2
4.2k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k