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
코틀린 어떻게 적용할까?
Search
TaeHwan
September 23, 2017
Programming
2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
코틀린 어떻게 적용할까?
Android TipTipTip
TaeHwan
September 23, 2017
More Decks by TaeHwan
See All by TaeHwan
Compose 함수 나누는 조건은?
taehwandev
0
4.7k
Android MVVM 패턴의 접근법 - 2023 드로이드 나이츠
taehwandev
1
2k
안드로이드의 변화 - IO Extended 2023 - 송도
taehwandev
0
690
What’s new in Android?(Google IO ex 23-GDG Pangyo)
taehwandev
0
990
Jetpack Compose 상태 및 사이드 효과
taehwandev
0
1.3k
GDG DevFest2022 Songdo - KMM(Kotlin Multiplatform Mobile)
taehwandev
0
690
Kotlin Night 2022 - 코틀린 어노테이션으로 할 수 있는 것(GDG Seoul)
taehwandev
2
1.7k
Android module 개발 - Now in android 참고
taehwandev
3
18k
Android Compose Component - mapping.
taehwandev
2
5k
Other Decks in Programming
See All in Programming
コーディング自動化の次へ。人の介入をゼロにするファクトリーとサポートAIによる実践
timakin
0
330
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
400
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
270
golang-bob.pdf
iwatsukayura
0
130
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1.2k
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
360
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
580
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
230
更なる可用性を求めて、5年間運用したKotlinのアプリケーションをGoでリプレイスする話
ken_tunc
0
570
AI主導のプログラミング学習アプリを作ってみた
econanringo
0
160
速習iPhone Duo対応
yuukiw00w
2
980
Featured
See All Featured
Ruling the World: When Life Gets Gamed
codingconduct
0
400
Why Our Code Smells
bkeepers
PRO
340
58k
Navigating Team Friction
lara
192
16k
How STYLIGHT went responsive
nonsquared
100
6.3k
So, you think you're a good person
axbom
PRO
2
2.2k
Large-scale JavaScript Application Architecture
addyosmani
516
110k
Product Roadmaps are Hard
iamctodd
55
13k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
620
Building Adaptive Systems
keathley
44
3.2k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
Statistics for Hackers
jakevdp
799
230k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
710
Transcript
ౣܽ যڌѱ ਊೡө? ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 1
ࣗѐ — ӂకജ — RGPKorea ਃӝਃ উ٘۽٘ ѐߊ —
GDG Seoul Organizer — ਬؘ : ౣܽ दೞӝ — ࠶۽Ӓ : Է ݆ ѐߊо غ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 2
ౣܽۆ? ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 3
ౣܽۆ? — 2011֙ ࣗѐ — ઇ࠳ۨੋীࢲ ઁ — 2016֙
1.0 ߓನ റ 1.1.50 ߡө ߓನ — উ٘۽٘ ҕध য(Java/Kotlin) ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 4
ࢿ — JDK 6/7/8/9 ਗਵ۽ Java৬ ֫ ഐജࢿ — JDK
6/7ਸ ా೧ Android ҳ ߡਸ ழߡ — উ٘۽٘ झౚ٣য়ܳ ాೠ ৮߷ೠ ో݂җ ࠽٘ दझమ ઁҕ — ۽о٘ ਊ оמ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 5
ࢿמ — Java৬ ਬࢎೠ ഋక bytecode ҳઑ۽ ੋ೧ ࡅܰѱ জ
ز — extension function/safety null/Lambda ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 6
Learning Curve — Java ѐߊۄݶ ־ҳա ਊ оמ —
ز ஶߡਸ ాೠ ౣܽ ൨ оמ — Javaܳ ݽܰݶ ؊ۄب ࢎਊೞӝ औח ঋ — ҡଳ Best Practices ࠗ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 7
Kotlin णೞӝ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 8
ޙࢲܳ ࠄ — ޙࢲ݅ఀ જ Ѥ হযਃ ౣܽ যڌѱ ਊೡө?
thdev.tech, 2017 9
଼ਸ ࠄ — ޙࢲٜ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 10
ೠӖ ܐܳ ࠄ — ߣࢲ, ழפש ଼, ҍ աৢ ౣܽ
ࢲٜ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 11
ਬؘ ъܳ ࠄ — $15 ಪ : ҍ সؘ(9ਘ ݈
or 10ਘ ୡ ) ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 12
kotlin ۽ં दೞӝ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 13
Try kotlinਵ۽ दೞӝ — kotlin ࢎীࢲ ઁҕೞח try.kotlinlang.org ౣܽ যڌѱ
ਊೡө? thdev.tech, 2017 14
࢜۽ ۽ં৬ ೣԋ द — AS 3.0ীࢲ kotlin ۽ં۽ दೠ
ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 15
Java ۽ં ജೞӝ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 16
Java ۽ં ജೞӝ — UIࠗఠ ೡө? — data classࠗఠ ೡө?
— ࢜۽ ಕܳ ୶оೞݶࢲ ೯ೡө? — ܻಂష݂ ೞݶࢲ ೡө? ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 17
ח ۧѱ ೮যਃ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 18
ח ۧѱ ೮যਃ — ࢠ ۽ં ઁ — kotlin ҙ۲
࠶۽Ӓ ࢿ — ਬؘ ъ ઁ — ഥࢎীࢲ पઁ ਊ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 19
ח ۧѱ ೮যਃ - ഥࢎীࢲ ਊೞӝ — ࢜۽ ਊೞח Activity/Fragment
ӝળਵ۽ ਊ — ੌױ ߄۽ ࢿ೧ਃ — command + option + shift + k۽ ജ — ৮߷ ߸ജೞ ঋਵפ ੌࠗ ٘ܳ ࣚࠇפ — android extensionب ೣԋ ਊפ.(UI ࢎਊ ಞࢿ) — ޙࢲب ࠁҊ, ࢠب ٜ݅Ҋ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 20
ח ۧѱ ೮যਃ - ഥࢎীࢲ ਊೞӝ — ಕয ۽Ӓې߁ਸ ా೧
ਊ೮যਃ — MVVMਸ ೣԋ ਊ — ఃࠁ٘ח 2ѐܳ ֬Ҋ — ীࢲ ੑ٬җ ࢲ۽ ঌ۰ݶࢲ ೯ — ೠ ׳ р ೯ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 21
ਊೞݶࢲ ೡ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 22
null ܻী ೞࣁਃ // class name String.kt fun merge(a: String,
b: String) = "$a $b" ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 23
null ܻী ೞࣁਃ - javaীࢲ ࠗܳ ٸ // class name
String.kt fun merge(a: String, b: String) = "$a $b" public class Sample { @Test public void sample() { System.out.println("merge " + StringKt.merge("A", "B")); } } ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 24
null ܻী ೞࣁਃ - javaীࢲ ࠗܳ ٸ // class name
String.kt fun merge(a: String, b: String) = "$a $b" public class Sample { private String a = "A"; private String b = "B"; @Before public void setUp() { a = null; } @Test public void sample() { System.out.println("merge " + StringKt.merge(a, b)); } } ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 25
null ܻী ೞࣁਃ - javaীࢲ ࠗܳ ٸ // class name
String.kt fun merge(a: String, b: String) = "$a $b" public class Sample { private String a = "A"; private String b = "B"; @Before public void setUp() { a = null; } @Test public void sample() { System.out.println("merge " + StringKt.merge(a, b)); // java.lang.IllegalArgumentException: // Parameter specified as non-null is null: // method tech.thdev.myapplication.StringKt.merge } } ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 26
উೞѱ ܻೞӝ ਤ೧ࢲ — nullable ܻ — ? ೞաݶ ܻ
оמ // class name String.kt fun merge(a: String?, b: String?) = "$a $b" ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 27
elvis operator String merge(String a, String b) { return (a
!= null ? a : "a") + " " + (b != null ? b : "b"); } a != null ? a : "a" ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 28
elvis operator -> java String merge(String a, String b) {
return (a != null ? a : "a") + " " + (b != null ? b : "b"); } a != null ? a : "a" -> kotlin fun merge(a: String?, b: String?) = "${a ?: "a"} ${b ?: "b"}" a ?: "a" ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 29
ਬਊೠ ޙߨٜ — let : null ী ۽ ࢎਊೞחؘ value(data)ীࢲ݅
ೞח ѱ જ ইਃ — apply : ࢤࢿҗ زदী ਊೡ ٸ ਬਊ೧ਃ — run : ࢤࢿೠ View ژח ёী Ӕೡ ٸ ਬਊ೧ਃ — with() : Viewী ࢎਊೡ ٸ? — also : ё copy — takeIf : if ݶ return or null — takeUnless : ifо ইפݶ return or null ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 30
ೣࣻ ഛ fun View.onBindView() { tv_title.text = "TITLE" // ...
} ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 31
Higher-Order Functions class Sample { fun test() { higherOrder {
(a, b) -> a + b } } fun higherOrder(sum: (Int, Int) -> Int) = sum(10, 20) } ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 32
data class public final class UserInfo { private String name;
private int age; public UserInfo(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String toString() { return "UserInfo(name=" + this.name + ", age=" + this.age + ")"; } public int hashCode() { return (this.name != null?this.name.hashCode():0) * 31 + this.age; } public boolean equals(Object var1) { if (obj == this) return true; if (!(obj instanceof UserInfo)) { return false; } UserInfo userInfo = (UserInfo) obj; return userInfo.name.equals(name) && userInfo.age == age; } } ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 33
data class — ցޖ ӡয — ࠁউਸ ਤೠ hashCode, equalsח
যঠ ೣ — get/setب ਃೣ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 34
data class — ցޖ ӡয — ࠁউਸ ਤೠ hashCode, equalsח
যঠ ೣ — get/setب ਃೣ -> kotlin data class ਊਵ۽ ೠߑী ೧Ѿ ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 35
data class data class UserInfo(var name: String?, var age: Int?)
ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 36
Ӓېࢲ? — ౣܽ જইਃ. — ח ب۽ ࢎਊ೮যਃ wakatime
ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 37
Ӓېࢲ? — ഥࢎীࢲ ਊೞݶࢲ ҕࠗೞח ѱ о જҊ — kotlin
ਊ റ javaо ҾӘೞݶ ٣ஹੌ ೞӝ — ੌױ javaۢ ࢿೞݶࢲ ҕࠗೞࣁਃ. ౣܽ যڌѱ ਊೡө? thdev.tech, 2017 38