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
코틀린 어떻게 적용할까?
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
TaeHwan
September 23, 2017
Programming
1.9k
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.5k
Android MVVM 패턴의 접근법 - 2023 드로이드 나이츠
taehwandev
1
2k
안드로이드의 변화 - IO Extended 2023 - 송도
taehwandev
0
670
What’s new in Android?(Google IO ex 23-GDG Pangyo)
taehwandev
0
950
Jetpack Compose 상태 및 사이드 효과
taehwandev
0
1.3k
GDG DevFest2022 Songdo - KMM(Kotlin Multiplatform Mobile)
taehwandev
0
670
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
分散システム、なんですぐ死んでしまうん?耐障害性を高めたいあなたのためのレジリエンスパターン入門
mshibuya
7
5.8k
Claude Team Plan導入・ガイド
tk3fftk
0
180
1B+ /day規模のログを管理する技術
broadleaf
0
130
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
580
AI 輔助遺留系統現代化的經驗分享
jame2408
1
1.2k
これからAgentCoreを触る方へトレンドはGatewayです
har1101
6
490
音楽のための関数型プログラミング言語mimiumにおける多段階計算の活用
tomoyanonymous
1
310
共通化で考えるべきは、実装より公開する型だった
codeegg
0
210
はてなアカウント基盤 State of the Union
cockscomb
1
1.3k
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
360
20260623_Loop Engineeringで自分の分身の問い合わせBotを作る
ryugen04
0
200
광주소프트웨어마이스터고등학교 DevFest 특강 - 바이브 코딩 시대에서 주니어 개발자로 살아남는 방법
utilforever
1
110
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Ruling the World: When Life Gets Gamed
codingconduct
0
280
New Earth Scene 8
popppiees
3
2.4k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
2
320
We Have a Design System, Now What?
morganepeng
55
8.2k
Building an army of robots
kneath
306
46k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
610
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Context Engineering - Making Every Token Count
addyosmani
9
1k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.7k
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