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
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.6k
Android MVVM 패턴의 접근법 - 2023 드로이드 나이츠
taehwandev
1
2k
안드로이드의 변화 - IO Extended 2023 - 송도
taehwandev
0
680
What’s new in Android?(Google IO ex 23-GDG Pangyo)
taehwandev
0
960
Jetpack Compose 상태 및 사이드 효과
taehwandev
0
1.3k
GDG DevFest2022 Songdo - KMM(Kotlin Multiplatform Mobile)
taehwandev
0
680
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
プロポーザルを書いてもらう
pvcresin
0
550
PHP初心者セッション2026 〜生成AIでは見えない裏側を知る:今だからLAMPを通して仕組みを学ぶ〜
kashioka
0
940
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
1
1.7k
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
710
AI時代に設計が 最大の生産性レバーになる 意図駆動開発とデータを消さない設計|Don't Delete Your Data or Your Intent — Design as the Deepest Lever in the AI Era
tomohisa
1
980
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
5
1.9k
VibeCodingからAgenticWorkflowへ
starfish719
0
550
Foundation Models frameworkで画像分析
ryodeveloper
1
620
ここ半年くらいでAIに作らせたR用ツール
eitsupi
0
380
20260722_microCMSで考える、AI時代のコンテンツ運用設計
yosh1
0
410
使いながら育てる Claude Code — 開発フローの1コマンド化 × 繰り返し指摘の自動仕組み化
shiki_kakaku
0
1.8k
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
2.8k
Featured
See All Featured
AI: The stuff that nobody shows you
jnunemaker
PRO
9
920
The Curse of the Amulet
leimatthew05
2
14k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
470
Making Projects Easy
brettharned
120
6.7k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.8k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
230
Darren the Foodie - Storyboard
khoart
PRO
3
3.6k
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