Kotlin 2.1.10 ๋ณ€๊ฒฝ์ 
ยท
Languages/Kotlin
Kotlin 2.1.10์˜ ์•ˆ์ •์ ์ธ ์ตœ์‹  ๋ฒ„์ „ ๋ถ„์„ ๋ฐ ์ฃผ์š” ๋ณ€๊ฒฝ ์‚ฌ์•ˆ ํ‰๊ฐ€์ฝ”ํ‹€๋ฆฐ 2.1.10์€ 2025๋…„ 2์›” ๊ธฐ์ค€ ์ตœ์‹  ์•ˆ์ •ํ™” ๋ฒ„์ „์œผ๋กœ, ์–ธ์–ด์˜ ์ง„ํ™”์™€ ์ƒํƒœ๊ณ„ ํ™•์žฅ์„ ์œ„ํ•œ ์ค‘๋Œ€ํ•œ ๊ฐœ์„  ์‚ฌํ•ญ๋“ค์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๋ณธ ๋ณด๊ณ ์„œ๋Š” ์ฝ”ํ‹€๋ฆฐ 2.1.x ์‹œ๋ฆฌ์ฆˆ์˜ ๊ธฐ์ˆ ์  ํ˜์‹ ์„ ๋‹ค์ธต์ ์œผ๋กœ ๋ถ„์„ํ•˜๋ฉฐ, ํŠนํžˆ K2 ์ปดํŒŒ์ผ๋Ÿฌ์˜ ์„ฑ๋Šฅ ์ตœ์ ํ™”์™€ ๋‹ค์ค‘ ํ”Œ๋žซํผ ์ง€์› ๊ฐ•ํ™”์— ์ดˆ์ ์„ ๋งž์ถฅ๋‹ˆ๋‹ค. ๊ณต์‹ ๋ฌธ์„œ์™€ ์ตœ์‹  ๊ฐœ๋ฐœ์ž ์ปค๋ฎค๋‹ˆํ‹ฐ ์ž๋ฃŒ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ฒด๊ณ„์ ์ธ ๊ธฐ์ˆ  ํ‰๊ฐ€๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.์ฝ”ํ‹€๋ฆฐ ๋ฒ„์ „ ๊ด€๋ฆฌ ์ฒด๊ณ„์˜ ๊ตฌ์กฐ์  ๊ฐœํŽธ์–ธ์–ด ๋ฆด๋ฆฌ์Šค์™€ ํˆด๋ง ๋ฆด๋ฆฌ์Šค์˜ ์ด์›ํ™”2023๋…„ 11์›” ๋„์ž…๋œ ์ƒˆ๋กœ์šด ๋ฒ„์ „ ๊ด€๋ฆฌ ์ „๋žต์€ ๊ฐœ๋ฐœ ์ƒํƒœ๊ณ„์˜ ์œ ์—ฐ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค. 6๊ฐœ์›” ์ฃผ๊ธฐ์˜ ์–ธ์–ด ๋ฆด๋ฆฌ์Šค(2.x.0)๋Š” ๋ฌธ๋ฒ• ํ™•์žฅ๊ณผ ํ•ต์‹ฌ ์•„ํ‚คํ…์ฒ˜ ๋ณ€๊ฒฝ์„ ๋‹ด๋‹นํ•˜๋ฉฐ, 3๊ฐœ์›” ๊ฐ„๊ฒฉ์˜ ํˆด๋ง ๋ฆด๋ฆฌ..
[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..
Kotlin ์ด๋ž€
ยท
Languages/Kotlin
Kotlin์€ ๊ฐ„๊ฒฐํ•˜๊ณ  ์•ˆ์ „ํ•˜๋ฉฐ ์œ ์ง€ ๊ด€๋ฆฌ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ๋” ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์ตœ์‹  ์˜คํ”ˆ ์†Œ์Šค ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ์€ Kotlin์˜ ๊ฐ€์žฅ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ ์ค‘ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค. Null ์•ˆ์ „์„ฑ: Kotlin์—๋Š” ์ปดํŒŒ์ผ ํƒ€์ž„์— null ํฌ์ธํ„ฐ ์˜ˆ์™ธ๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ์œ ํ˜• ์‹œ์Šคํ…œ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜ ์—†์ด null ๊ฐ’์„ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” nullable ํ˜•์‹ ์‹œ์Šคํ…œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ ์ฝ”๋“œ์˜ ์•ˆ์ „์„ฑ๊ณผ ์‹ ๋ขฐ์„ฑ์„ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ํ™•์žฅ ํ•จ์ˆ˜: Kotlin์˜ ํ™•์žฅ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ ๋„ ๊ธฐ์กด ํด๋ž˜์Šค์— ์ƒˆ ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋” ๊ฐ„๊ฒฐํ•˜๊ณ  ์ฝ๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ฝ”๋“œ ์ค‘๋ณต์„ ์ค„์ด๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜..