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
「エンジニアインターン、どうやって取った?」準備のリアルを語るLT会 Progate BAR
akiomatic
0
130
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
130
Spec-Driven Development with AI-Agents: From High-Level Requirements to Working Software
antonarhipov
2
480
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
520
LLM Plugin for Node-REDの利用方法と開発について
404background
0
170
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
180
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
130
New "Type" system on PicoRuby
pocke
1
780
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
200
OSもどきOS
arkw
0
470
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
650
A2UI という光を覗いてみる
satohjohn
1
120
Featured
See All Featured
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
560
Evolving SEO for Evolving Search Engines
ryanjones
0
210
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
360
Chasing Engaging Ingredients in Design
codingconduct
0
220
Information Architects: The Missing Link in Design Systems
soysaucechin
0
960
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.3k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
Discover your Explorer Soul
emna__ayadi
2
1.1k
GraphQLとの向き合い方2022年版
quramy
50
15k
The Curse of the Amulet
leimatthew05
1
13k
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