[Kotlin] ์ฝ”๋ฃจํ‹ด: ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ
ยท
Languages/Kotlin
Kotlin์˜ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ตœ์‹  ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ฑ๋Šฅ ์ตœ์ ํ™”์˜ ํ•ต์‹ฌ ์š”์†Œ๋กœ ์ž๋ฆฌ ์žก์•˜์Šต๋‹ˆ๋‹ค. ํŠนํžˆ Kotlin์€ ์ฝ”๋ฃจํ‹ด(coroutine)์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๊ฐ•๋ ฅํ•œ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ์„ ์ œ๊ณตํ•˜๋ฉฐ, ์ด๋Š” ๊ธฐ์กด์˜ ์ฝœ๋ฐฑ ์ง€์˜ฅ(callback hell) ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์ง๊ด€์ ์ธ ์ฝ”๋“œ ์ž‘์„ฑ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๋ณธ ๋ณด๊ณ ์„œ์—์„œ๋Š” Kotlin์˜ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‹ฌ์ธต ๋ถ„์„ํ•˜๊ณ , runBlocking, Dispatchers.IO, Promise ๊ฐœ๋…์˜ ์ฐจ์ด์ ๊ณผ ์‹ค์ œ ์ ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ๊ตฌ์ฒด์ ์ธ ์ฝ”๋“œ ์˜ˆ์ œ์™€ ํ•จ๊ป˜ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.1. Kotlin ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์˜ ํ•ต์‹ฌ ๊ฐœ๋…1.1 ์ฝ”๋ฃจํ‹ด์˜ ๊ตฌ์กฐ์  ๋™์‹œ์„ฑKotlin ์ฝ”๋ฃจํ‹ด์€ ๊ฒฝ๋Ÿ‰ ์Šค๋ ˆ๋“œ(lightweight thread) ๊ฐœ๋…์„ ๊ตฌํ˜„ํ•˜์—ฌ..
[Kotlin] ํด๋ž˜์Šค ์ ‘๊ทผ ์ œ์–ด์ž์™€ ์ˆ˜์ •์ž(protected, inner, private, open)
ยท
Languages/Kotlin
Kotlin ํด๋ž˜์Šค ์ ‘๊ทผ ์ œ์–ด์ž์™€ ์ˆ˜์ •์ž์˜ ์‹ฌ์ธต ๋ถ„์„๊ฐœ์š”Kotlin์€ ํ˜„๋Œ€์ ์ด๊ณ  ํ‘œํ˜„๋ ฅ ๋†’์€ ์–ธ์–ด ์„ค๊ณ„๋ฅผ ์œ„ํ•ด ํด๋ž˜์Šค์™€ ๋ฉค๋ฒ„์˜ ๊ฐ€์‹œ์„ฑ ๋ฐ ํ™•์žฅ์„ฑ์„ ์„ธ๋ฐ€ํ•˜๊ฒŒ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ํ‚ค์›Œ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๋ณธ ๋ณด๊ณ ์„œ๋Š” protected, inner, private, open์˜ ํ•ต์‹ฌ ๊ฐœ๋…์„ ํ•ด๋ถ€ํ•˜๊ณ , ๊ฐ ํ‚ค์›Œ๋“œ์˜ ๋™์ž‘ ๋ฉ”์ปค๋‹ˆ์ฆ˜, ์ƒํ˜ธ ์ฐจ์ด์ , ์‹ค์ œ ๊ฐœ๋ฐœ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ์˜ ์ตœ์  ํ™œ์šฉ ์ „๋žต์„ ์ฒด๊ณ„์ ์œผ๋กœ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ Java์™€์˜ ๋น„๊ต๋ฅผ ํ†ตํ•ด Kotlin์˜ ์„ค๊ณ„ ์ฒ ํ•™์„ ๋ช…ํ™•ํžˆ ์ดํ•ดํ•˜๊ณ , ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, ๋ชจ๋“ˆํ™”, ์บก์Šํ™” ์ธก๋ฉด์—์„œ์˜ ๊ณ ๋ ค์‚ฌํ•ญ์„ ์ข…ํ•ฉ์ ์œผ๋กœ ๋…ผ์˜ํ•ฉ๋‹ˆ๋‹ค.1. private: ์—„๊ฒฉํ•œ ์บก์Šํ™”์˜ ๊ตฌํ˜„1.1 ๊ฐœ๋…์  ์ •์˜ํด๋ž˜์Šค ์ˆ˜์ค€: ์„ ์–ธ๋œ ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ๋งŒ ์ ‘๊ทผ ํ—ˆ์šฉ.์ตœ์ƒ์œ„ ์„ ์–ธ: ๋™์ผ ํŒŒ์ผ ๋‚ด์—์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ.Jav..
[Kotlin] class์™€ object ์ฐจ์ด์ 
ยท
Languages/Kotlin
Kotlin์˜ class์™€ object ํ‚ค์›Œ๋“œ: ์ฐจ์ด์  ๋ฐ ์ตœ์ ์˜ ํ™œ์šฉ ์‹œ๋‚˜๋ฆฌ์˜คKotlin์€ ํ˜„๋Œ€์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ์„œ ๊ฐ์ฒด ์ง€ํ–ฅ๊ณผ ํ•จ์ˆ˜ํ˜• ํŒจ๋Ÿฌ๋‹ค์ž„์„ ํ˜์‹ ์ ์œผ๋กœ ํ†ตํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ class์™€ object ํ‚ค์›Œ๋“œ์˜ ์„ค๊ณ„๋Š” Java ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ์ต์ˆ™ํ•œ ๊ฐœ๋…์„ ์žฌํ•ด์„ํ•˜๋ฉด์„œ๋„ Kotlin๋งŒ์˜ ๋…์ฐฝ์ ์ธ ํŠน์ง•์„ ๋ถ€์—ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ณธ ๋…ผ๋ฌธ์€ ๋‘ ํ‚ค์›Œ๋“œ์˜ ํ•ต์‹ฌ ์ฐจ์ด์ ์„ ๊ตฌ์กฐ์ ยท์„ฑ๋Šฅ์  ๊ด€์ ์—์„œ ๋ถ„์„ํ•˜๊ณ , ๋‹ค์–‘ํ•œ ๊ฐœ๋ฐœ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ์˜ ์ตœ์  ํ™œ์šฉ ์ „๋žต์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค.๊ฐœ์š”Kotlin์˜ object ํ‚ค์›Œ๋“œ๋Š” ํด๋ž˜์Šค ์ •์˜์™€ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ, ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด ๊ตฌํ˜„(91.7% ์‚ฌ์šฉ ์‚ฌ๋ก€), ์ •์  ๋ฉค๋ฒ„ ๊ด€๋ฆฌ(84.3%), ์ต๋ช… ๊ฐ์ฒด ์ƒ์„ฑ(63.2%) ๋“ฑ ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ์šฉ๋„๋กœ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด class๋Š” ์ „ํ†ต์ ์ธ..
[Kotlin] ์ฝ”ํ‹€๋ฆฐ let, run, apply, also, with์˜ ์ฐจ์ด์™€ ์ ์ ˆํ•œ ์‚ฌ์šฉ ์ƒํ™ฉ ๋ถ„์„
ยท
Languages/Kotlin
์ฝ”ํ‹€๋ฆฐ let, run, apply, also, with์˜ ์ฐจ์ด์™€ ์ ์ ˆํ•œ ์‚ฌ์šฉ ์ƒํ™ฉ ๋ถ„์„์ฝ”ํ‹€๋ฆฐ์˜ ๋ฒ”์œ„ ์ง€์ • ํ•จ์ˆ˜(Scope Functions)๋Š” ๊ฐ์ฒด ์ปจํ…์ŠคํŠธ ๋‚ด์—์„œ ์ฝ”๋“œ ๋ธ”๋ก์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํŠนํ™”๋œ ๋„๊ตฌ๋กœ, ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ๊ฐ„๊ฒฐ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ค๋Š” ํ•ต์‹ฌ ์š”์†Œ์ž…๋‹ˆ๋‹ค. let, run, apply, also, with์˜ ๋‹ค์„ฏ ๊ฐ€์ง€ ํ•จ์ˆ˜๋Š” ๊ฐ๊ฐ ๊ณ ์œ ํ•œ ํŠน์„ฑ์„ ๊ฐ€์ง€๋ฉฐ, ์ด๋“ค์˜ ์ฐจ์ด์ ์„ ์ •ํ™•ํžˆ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ํšจ์œจ์ ์ธ ์ฝ”๋”ฉ์„ ์œ„ํ•œ ์ฒซ๊ฑธ์Œ์ž…๋‹ˆ๋‹ค.๋ฒ”์œ„ ์ง€์ • ํ•จ์ˆ˜์˜ ํ•ต์‹ฌ ์ฐจ์ด์ ์ปจํ…์ŠคํŠธ ๊ฐ์ฒด ์ฐธ์กฐ ๋ฐฉ์‹it ์‚ฌ์šฉ: let, also โ†’ ๋ช…์‹œ์  ์ฐธ์กฐ๋กœ ์™ธ๋ถ€ ๋ณ€์ˆ˜์™€์˜ ์ถฉ๋Œ ๋ฐฉ์ง€this ์‚ฌ์šฉ: run, apply, with โ†’ ์•”์‹œ์  ์ฐธ์กฐ๋กœ ์ฝ”๋“œ ๊ฐ„์†Œํ™”๋ฐ˜ํ™˜ ๊ฐ’ ํŠน์„ฑ์ปจํ…์ŠคํŠธ ๊ฐ์ฒด ๋ฐ˜ํ™˜: apply, also โ†’ ๊ฐ์ฒด ์ž์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜์—ฌ ๋ฉ”..
[Kotlin] inline ํ‚ค์›Œ๋“œ: ์˜๋ฏธ์™€ ์ตœ์ ์˜ ์‚ฌ์šฉ ์ƒํ™ฉ ๋ถ„์„
ยท
Languages/Kotlin
Kotlin์˜ inline ํ‚ค์›Œ๋“œ: ์˜๋ฏธ์™€ ์ตœ์ ์˜ ์‚ฌ์šฉ ์ƒํ™ฉ ๋ถ„์„์ฝ”ํ‹€๋ฆฐ์˜ inline ํ‚ค์›Œ๋“œ๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ๋Ÿฐํƒ€์ž„ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์„ค๊ณ„๋œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ด ํ‚ค์›Œ๋“œ๋ฅผ ์ ์šฉํ•œ ํ•จ์ˆ˜๋Š” ์ปดํŒŒ์ผ ์‹œ ํ˜ธ์ถœ ์ง€์ ์— ํ•จ์ˆ˜ ๋ณธ๋ฌธ์„ ์ง์ ‘ ์‚ฝ์ž…(inline)ํ•˜์—ฌ ์‹คํ–‰ ํ๋ฆ„์„ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๊ณ ์ฐจ ํ•จ์ˆ˜(higher-order functions)์™€ ๋žŒ๋‹ค ํ‘œํ˜„์‹์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ํ•ต์‹ฌ์ ์ธ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.์ธ๋ผ์ธ ํ•จ์ˆ˜์˜ ์ž‘๋™ ๋ฉ”์ปค๋‹ˆ์ฆ˜1. ํ•จ์ˆ˜ ํ˜ธ์ถœ ์˜ค๋ฒ„ํ—ค๋“œ ์ œ๊ฑฐ์ผ๋ฐ˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ์€ ์Šคํƒ ํ”„๋ ˆ์ž„ ์ƒ์„ฑ, ์ ํ”„ ๋ช…๋ น์–ด ์‹คํ–‰, ๋ฐ˜ํ™˜ ์ฃผ์†Œ ๊ด€๋ฆฌ ๋“ฑ์˜ ๊ณผ์ •์„ ์ˆ˜๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด inline ํ•จ์ˆ˜๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ•จ์ˆ˜ ๋ณธ๋ฌธ์„ ํ˜ธ์ถœ ์œ„์น˜์— ์ง์ ‘ ๋ณต์‚ฌํ•˜๋ฏ€๋กœ ์ด๋Ÿฌํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ์ œ๊ฑฐ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด lock() ํ•จ์ˆ˜..
Kotlin ํ™•์žฅ ํ•จ์ˆ˜(Extension Function) ๋ž€
ยท
Languages/Kotlin
Kotlin ํ™•์žฅ ํ•จ์ˆ˜์˜ ์ดํ•ด์™€ ๋””์ž์ธ ํŒจํ„ด ์—ฐ๊ณ„ ๋ถ„์„Kotlin์˜ ํ™•์žฅ ํ•จ์ˆ˜(Extension Function)๋Š” ๊ธฐ์กด ํด๋ž˜์Šค์˜ ๊ธฐ๋Šฅ์„ ์ƒ์†์ด๋‚˜ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ํŒจํ„ด๊ณผ ๊ฐ™์€ ์ „ํ†ต์ ์ธ ๋””์ž์ธ ํŒจํ„ด ์—†์ด ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํ˜์‹ ์ ์ธ ์–ธ์–ด ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ 2016๋…„ Kotlin 1.0 ๋ฆด๋ฆฌ์Šค์™€ ํ•จ๊ป˜ ๋„์ž…๋˜์–ด ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๋น ๋ฅด๊ฒŒ ์ฑ„ํƒ๋˜์—ˆ์œผ๋ฉฐ, ํ˜„์žฌ๊นŒ์ง€ Kotlin์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์œผ๋กœ ์ž๋ฆฌ ์žก์•˜์Šต๋‹ˆ๋‹ค. ๋ณธ ๋ณด๊ณ ์„œ๋Š” ํ™•์žฅ ํ•จ์ˆ˜์˜ ๊ธฐ์ˆ ์  ๊ตฌํ˜„ ์„ธ๋ถ€์‚ฌํ•ญ๋ถ€ํ„ฐ ๋””์ž์ธ ํŒจํ„ด๊ณผ์˜ ์—ฐ๊ด€์„ฑ๊นŒ์ง€ ์ข…ํ•ฉ์ ์œผ๋กœ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.ํ™•์žฅ ํ•จ์ˆ˜์˜ ๊ธฐ์ดˆ ๋ฉ”์ปค๋‹ˆ์ฆ˜๋ฌธ๋ฒ•์  ๊ตฌ์กฐ์™€ ์ปดํŒŒ์ผ ๊ณผ์ •ํ™•์žฅ ํ•จ์ˆ˜ ์„ ์–ธ์€ ์ˆ˜์‹  ๊ฐ์ฒด ํƒ€์ž…(receiver type) ์ง€์ •์œผ๋กœ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. fun ์ˆ˜์‹ ๊ฐ์ฒดํƒ€์ž….ํ•จ์ˆ˜๋ช…() ํ˜•ํƒœ์˜ ์„ ์–ธ์€ ์ปดํŒŒ์ผ ์‹œ์ ์— ์ •์  ๋ฉ”์†Œ๋“œ๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ..
Kotlin sealed class ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž
ยท
Languages/Kotlin
Kotlin Sealed ํด๋ž˜์Šค์˜ ์ดํ•ด: ๋””์ž์ธ ํŒจํ„ด ๋ฐ ํ™œ์šฉ ์‚ฌ๋ก€ ๋ถ„์„Kotlin์˜ sealed ํด๋ž˜์Šค๋Š” ์ œํ•œ๋œ ํด๋ž˜์Šค ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์œผ๋กœ, ์ปดํŒŒ์ผ ํƒ€์ž„์— ๋ชจ๋“  ํ•˜์œ„ ํƒ€์ž…์„ ์ธ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ฃผ๋กœ ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ์—์„œ ํƒ€์ž… ์•ˆ์ „์„ฑ์„ ๋ณด์žฅํ•˜๋ฉฐ, ๋‹ค์–‘ํ•œ ๋””์ž์ธ ํŒจํ„ด๊ณผ์˜ ์‹œ๋„ˆ์ง€๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ ํ’ˆ์งˆ์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค. ๋ณธ ๋…ผ๋ฌธ์—์„œ๋Š” sealed ํด๋ž˜์Šค์˜ ์ž‘๋™ ์›๋ฆฌ์™€ ์‹ค์ œ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์—์„œ์˜ ์ ์šฉ ์ „๋žต์„ ์ฒด๊ณ„์ ์œผ๋กœ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.1. Sealed ํด๋ž˜์Šค์˜ ๊ตฌ์กฐ์  ํŠน์„ฑ1.1 ๊ณ„์ธต ์ œ์–ด ๋ฉ”์ปค๋‹ˆ์ฆ˜sealed ํด๋ž˜์Šค๋Š” ์ถ”์ƒ ํด๋ž˜์Šค๋กœ, ๋™์ผ ๋ชจ๋“ˆ ๋‚ด์—์„œ๋งŒ ์ƒ์† ๊ฐ€๋Šฅํ•œ ์ œ์•ฝ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค(Kotlin 1.5 ์ดํ›„ ํŒจํ‚ค์ง€ ๋ฒ”์œ„ ํ™•์žฅ). ์ด ์ œ์•ฝ์€ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ชจ๋“  ์„œ๋ธŒํด๋ž˜์Šค..
Kotlin K2 ๋ชจ๋“œ์™€ K1์˜ ์ฐจ์ด์  ๋ฐ ์žฅ๋‹จ์  ๋ถ„์„
ยท
Languages/Kotlin
Kotlin K2 ๋ชจ๋“œ์™€ K1์˜ ์ฐจ์ด์  ๋ฐ ์žฅ๋‹จ์  ๋ถ„์„Kotlin ์–ธ์–ด์˜ ์ง„ํ™”๋Š” ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์š”๊ตฌ์™€ ํ˜„๋Œ€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ํŠธ๋ Œ๋“œ๋ฅผ ๋ฐ˜์˜ํ•˜๋ฉฐ ์ง€์†์ ์œผ๋กœ ๋ฐœ์ „ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 2024๋…„ JetBrains๋Š” Kotlin ์ƒํƒœ๊ณ„์˜ ์ค‘์ถ”์ ์ธ ๋ณ€ํ™”๋ฅผ ๊ฐ€์ ธ์˜จ K2 ์ปดํŒŒ์ผ๋Ÿฌ์™€ K2 ๋ชจ๋“œ๋ฅผ ๊ณต๊ฐœํ–ˆ์œผ๋ฉฐ, ์ด๋Š” ๊ธฐ์กด K1 ์•„ํ‚คํ…์ฒ˜์™€์˜ ๊ทผ๋ณธ์ ์ธ ์ฐจ๋ณ„์„ฑ์„ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณธ ๋ณด๊ณ ์„œ๋Š” K2 ๋ชจ๋“œ์™€ K1์˜ ๊ธฐ์ˆ ์  ์ฐจ์ด๋ฅผ ๋‹ค๊ฐ๋„๋กœ ๋ถ„์„ํ•˜๊ณ , ์‹ค์ œ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ์˜ ์ ์šฉ ์‚ฌ๋ก€๋ฅผ ํ†ตํ•ด ์žฅ๋‹จ์ ์„ ์ข…ํ•ฉ์ ์œผ๋กœ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.1. K2 ๋ชจ๋“œ์™€ K1์˜ ์•„ํ‚คํ…์ฒ˜์  ์ฐจ์ด1.1 ์ปดํŒŒ์ผ๋Ÿฌ ๊ตฌ์กฐ์˜ ํ˜์‹ K1 ์ปดํŒŒ์ผ๋Ÿฌ๋Š” Kotlin 1.x ์‹œ๋ฆฌ์ฆˆ์—์„œ ์‚ฌ์šฉ๋˜๋˜ ์ „ํ†ต์ ์ธ ์•„ํ‚คํ…์ฒ˜๋กœ, PSI(Program Structure Interface)์™€ UAST(Uni..
[Intelli-j] Kotlin ์€๋‹‰ ๋ณ€์ˆ˜ ํƒ€์ž… ๋ณด์ด๊ฒŒ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•
ยท
Tool/IntelliJ
์ธํ…”๋ฆฌ์ œ์ด Kotlin์–ธ์–ด ์€๋‹‰ ๋ณ€์ˆ˜ ํƒ€์ž… ๋ณด์ด๊ฒŒ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ• IntelliJ(2022.1) ์ดํ›„๋Š” Settings -> Editor -> Inlay Hints -> Types -> Kotlin -> Types -> Parameter hints -> Local variable types or check all. ์ด ๊ธฐ๋Šฅ ๊ตฌ์„ฑ์€ ๋ฉ”๋‰ด์— ์•ฝ๊ฐ„ ์ˆจ๊ฒจ์ ธ ์žˆ๊ณ  ๋‹ค๋ฅธ ๋ฆด๋ฆฌ์Šค๊ฐ„์— ๋งŽ์ด ์ด๋™๋˜์—ˆ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. IntelliJ(2020.3) ์ดํ›„๋Š” Settings -> Editor -> Inlay Hints -> Kotlin -> Parameter hints -> Types IntelliJ 2019.3.1 ์ด์ƒ์—์„œ๋Š” Settings -> Editor -> Inlay Hints -> Kotlin -> ..
Kotlin in Action
ยท
Book
์žฅ ์ œ๋ชฉ: ์ฝ”ํ‹€๋ฆฐ ์†Œ๊ฐœ Kotlin์„ ์‚ฌ์šฉํ•œ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ Kotlin์„ ์‚ฌ์šฉํ•œ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ Kotlin ๊ฐœ๋ฐœ ๋„๊ตฌ ์‹œ์ž‘ํ•˜๊ธฐ Kotlin์—์„œ ๊ธฐ๋ณธ ์œ ํ˜• ๋ฐ ์ œ์–ด ํ๋ฆ„ ์ž‘์—… Kotlin ์ปฌ๋ ‰์…˜ ๋ฐ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์˜ˆ์™ธ์™€ ๋กœ๊น…์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ตฌ์ถ• Kotlin์„ ์‚ฌ์šฉํ•œ ๋™์‹œ์„ฑ ๋ฐ ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ์ฝ”ํ‹€๋ฆฐ ์ฝ”ํ‹€๋ฆฐ์„ ์‚ฌ์šฉํ•œ ์›น ๊ฐœ๋ฐœ Kotlin ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ…Œ์ŠคํŠธ ๋ฐ ๋””๋ฒ„๊น… ๊ณ ๊ธ‰ ์ฝ”ํ‹€๋ฆฐ ๊ธฐ๋Šฅ Kotlin ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๊ถŒ์žฅ์‚ฌํ•ญ Kotlin ๋ฐ Java์™€์˜ ์ƒํ˜ธ ์šด์šฉ์„ฑ ์ฝ”ํ‹€๋ฆฐ ๊ฐœ๋ฐœ์˜ ๋ฏธ๋ž˜ ์ฑ… ์†Œ๊ฐœ : Kotlin์€ Java ๊ฐ€์ƒ ๋จธ์‹ (JVM)์—์„œ ์‹คํ–‰๋˜๋Š” ํ˜„๋Œ€์ ์ด๊ณ  ๊ฐ„๊ฒฐํ•˜๋ฉฐ ๋‹ค์žฌ๋‹ค๋Šฅํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ด๋ฉฐ Android ์•ฑ ๊ฐœ๋ฐœ์—์„œ ์›น ๊ฐœ๋ฐœ ๋ฐ ์„œ๋ฒ„ ์ธก ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์ด๋ฅด๊ธฐ๊นŒ์ง€..