Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
nseg92 kotlin Null Safety
Search
hATrayflood
September 16, 2017
Programming
61
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
More Decks by hATrayflood
See All by hATrayflood
NSEG 19/08 chromiumカスタムビルド
h_rayflood
1
210
NSEG 19/08 chromiumブランディングとローカライズ
h_rayflood
0
250
NSEG 19/08 chromium内部構造とIPC
h_rayflood
0
270
NSEG 19/08 Web VideoMarkの紹介
h_rayflood
1
160
glnagano-python peewee
h_rayflood
0
390
nseg100 pythonでwebサーバ
h_rayflood
0
30
nseg77-vol1 USBブートのインストーラを作る
h_rayflood
0
96
nseg77-vol2 野良リポジトリを作る
h_rayflood
0
51
Other Decks in Programming
See All in Programming
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.6k
net-httpのHTTP/2対応について
naruse
0
470
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
4
2.7k
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
150
エージェンティックRAGにAWSで入門しよう!
har1101
8
1.4k
JavaDoc 再入門
nagise
0
310
CLIであることを活かしたGitHub Copilot CLI活用術 / GitHub Copilot CLI Pro Tips & Tricks
nao_mk2
1
1.2k
Spring Security 実践 ─ GraphQL APIで実務に役立つ 認証・認可 を学ぶ
wagyu
0
210
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
530
Agentic UI
manfredsteyer
PRO
0
120
The NotImplementedError Problem in Ruby
koic
1
670
Why Laravel apps break—Mastering the fundamentals to keep them maintainable
kentaroutakeda
1
340
Featured
See All Featured
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
250
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
The Curious Case for Waylosing
cassininazir
1
380
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
770
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.5k
30 Presentation Tips
portentint
PRO
1
320
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
160
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
550
Transcript
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