๊พธ์ค€ํ•จ์ด ์ง„๋ฆฌ๋‹ค!!

์–ด์ œ๋ณด๋‹ค ๋ฐœ์ „ํ•œ ์˜ค๋Š˜์ด ๋˜๊ณ ํ”ˆ ๐Ÿง‘๐Ÿปโ€๐Ÿ’ป ์˜ ๋ธ”๋กœ๊ทธ

Kotlin 22

[Kotlin][Android] ์•ˆ๋“œ๋กœ์ด๋“œ Service(์„œ๋น„์Šค)์— ๋Œ€ํ•˜์—ฌ

์•ˆ๋…•ํ•˜์„ธ์š” ์˜ค๋Š˜์€ ์•ˆ๋“œ๋กœ์ด๋“œ์˜ Service์— ๋Œ€ํ•˜์—ฌ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ํฌ์ŠคํŒ…ํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. Service(์„œ๋น„์Šค)๋ž€? ์ผ์ •ํ•œ ๊ฐ„๊ฒฉ์œผ๋กœ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ์„ธ์Šค ์ฆ‰, ํ™”๋ฉด์—์„œ๋Š” ๋ณด์ด์ง€ ์•Š์ง€๋งŒ ๋’ค์—์„œ ์ง€์†์ ์œผ๋กœ ํ•ด์•ผ ํ•˜๋Š” ์ž‘์—…์„ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ์ž…๋‹ˆ๋‹ค. โœ”๏ธ ์„œ๋น„์Šค๋Š” ๋กœ์ปฌ์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ์„œ๋น„์Šค( startService( ) )์™€ ์›๊ฒฉ์—์„œ ์‹คํ–‰๋˜๋Š” ์„œ๋น„์Šค( bindService( ) )๊ฐ€ ์กด์žฌ Service(์„œ๋น„์Šค)์˜ ์ƒ๋ช…์ฃผ๊ธฐ ์œ„ ์ด๋ฏธ์ง€๋Š” ์„œ๋น„์Šค์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚˜๋Š” ์ด๋ฏธ์ง€์ž…๋‹ˆ๋‹ค. ์„œ๋น„์Šค๋„ Activity์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ƒ๋ช…์ฃผ๊ธฐ๊ฐ€ ์กด์žฌํ•˜๋ฉฐ ๋กœ์ปฌ ์„œ๋น„์Šค์™€ ์›๊ฒฉ ์„œ๋น„์Šค์˜ ์ƒ๋ช…์ฃผ๊ธฐ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Local์—์„œ ๋™์ž‘ํ•˜๋Š” ์„œ๋น„์Šค์˜ ๊ฒฝ์šฐ startService()๋กœ ์„œ๋น„์Šค๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ ..

Android/Kotlin 2022.10.14

[Kotlin][Android] ์•ˆ๋“œ๋กœ์ด๋“œ Activity(์•กํ‹ฐ๋น„ํ‹ฐ)์˜ ์ƒ๋ช…์ฃผ๊ธฐ์™€ ํ•จ์ˆ˜

- onCreate() ์ตœ์ดˆ๋กœ Activity๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, ์ฒ˜์Œ์œผ๋กœ ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ์ฃผ๋กœ ์ดˆ๊ธฐํ™” ๊ด€๋ จ ์ž‘์—…์„ ํ•ฉ๋‹ˆ๋‹ค. override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) Log.d(TAG , "MainActivity - onCreate") } - onStart() ์ตœ์ดˆ๋กœ Activity๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, onCreate() ๋‹ค์Œ์œผ๋กœ ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. onStop() -> onRestart() ๋‹ค์Œ์œผ๋กœ ํ˜ธ์ถœ๋˜๋Š” ํ•จ์ˆ˜์ด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์ด ์‹œ์ ๋ถ€ํ„ฐ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์•กํ‹ฐ๋น„ํ‹ฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. override fun onStart() { su..

Android/Kotlin 2022.10.14

[Kotlin] ์ฝ”ํ‹€๋ฆฐ Coroutine์— ๋Œ€ํ•˜์—ฌ (3) - Coroutine Flow(ํ”Œ๋กœ์šฐ)

์•ˆ๋…•ํ•˜์„ธ์š”๐Ÿ‘‹ ์˜ค๋Š˜์€ ์ฝ”๋ฃจํ‹ด ๊ด€๋ จ ๋งˆ์ง€๋ง‰ ํฌ์ŠคํŒ…์œผ๋กœ ์ฝ”๋ฃจํ‹ด Flow์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ํฌ์ŠคํŒ…ํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. 1. Coroutine Flow๋ž€? Flow๋Š” ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฐ’์„ ๋‚ด๋ณด๋‚ด๊ณ  ์ •์ƒ์ ์œผ๋กœ ๋˜๋Š” ์˜ˆ์™ธ๋กœ ์™„๋ฃŒ๋˜๋Š” ๋น„๋™๊ธฐ์ ์ธ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์ž…๋‹ˆ๋‹ค. Flow์—๋Š” ์ด 3๊ฐ€์ง€ ์—ญํ• ์ด ์กด์žฌํ•˜๋ฉฐ ๊ฐ๊ฐ์˜ ์„ค๋ช…์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. Producer (์ƒ์‚ฐ์ž) ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ(flow)์„ ์ƒ์‚ฐํ•˜๋ฉฐ ์ฝ”๋ฃจํ‹ด์„ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ƒ์‚ฐ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด ์คŒ InterMediary(์ค‘๊ฐœ์ž) Producer๊ฐ€ ๋‚ด๋ณด๋‚ด๋Š” ๊ฐ๊ฐ์˜ ๊ฐ’์ด๋‚˜ ์ŠคํŠธ๋ฆผ ์ž์ฒด๋ฅผ ์ˆ˜์ •, ์‚ญ์ œ,๋ณ‘ํ•ฉ ๋“ฑ์˜ ์กฐ์ž‘ ์ž‘ ์—…์„ ์ˆ˜ํ–‰ consumer(์†Œ๋น„์ž , ๊ตฌ๋…์ž) ์ŠคํŠธ๋ฆผ์„ ์†Œ๋น„ํ•˜๋Š” ๊ณณ( Android์—์„œ๋Š” ์ฃผ๋กœ UI ์ž‘์—…) 2. Cold Flow์™€ Hot Flow Cold Flow๋Š” ์†Œ..

Tutorial/tutorial 2022.10.13

[Kotlin] ์ฝ”ํ‹€๋ฆฐ Coroutine(์ฝ”๋ฃจํ‹ด)์— ๋Œ€ํ•˜์—ฌ (2) - ์ฝ”๋ฃจํ‹ด Channel(์ฑ„๋„)

์•ˆ๋…•ํ•˜์„ธ์š” ์˜ค๋Š˜์€ ์ €๋ฒˆ ํฌ์ŠคํŒ…์— ์ด์–ด์„œ ์ฝ”๋ฃจํ‹ด Channel์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋ฃจํ‹ด์˜ ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฐฉ๋ฒ•์€ ์ด์ „ ํฌ์ŠคํŒ…์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ํ•จ๊ป˜ ํ™•์ธํ•ด๋ณด์„ธ์š” :) [Kotlin] ์ฝ”ํ‹€๋ฆฐ Coroutine(์ฝ”๋ฃจํ‹ด)์— ๋Œ€ํ•˜์—ฌ (1) - CoroutineScope์™€ CoroutineContext ๋ฐ ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฐฉ๋ฒ• ์•ˆ๋…•ํ•˜์„ธ์š” ์˜ค๋Š˜์€ ์ฝ”ํ‹€๋ฆฐ์˜ Coroutine์— ๋Œ€ํ•˜์—ฌ ํฌ์ŠคํŒ…ํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. Coroutine์ด๋ž€? ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ํ•˜๋‚˜์˜ ์ž‘์—… ๋‹จ์œ„๋ฅผ Routine์ด๋ผ ํ•˜๋Š”๋ฐ ๊ฐ Routine์ด ํ˜‘์—…(Co)ํ•˜์—ฌ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ •์„ ํ•ฉ์น˜๊ฒŒ devyo-111commit.tistory.com ์ฝ”๋ฃจํ‹ด Channel(์ฑ„๋„)์ด๋ž€? 2๊ฐœ ์ด์ƒ์˜ ์ฝ”๋ฃจํ‹ด ์‚ฌ์ด์— ์—ฐ๊ฒฐ๋œ ์ƒ์‚ฐ์ž์™€ ์†Œ๋น„์ž์˜ ๊ด€๊ณ„๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ์„ ..

Tutorial/tutorial 2022.10.11

[Kotlin] ์ฝ”ํ‹€๋ฆฐ Coroutine(์ฝ”๋ฃจํ‹ด)์— ๋Œ€ํ•˜์—ฌ (1) - CoroutineScope์™€ CoroutineContext ๋ฐ ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฐฉ๋ฒ•

์•ˆ๋…•ํ•˜์„ธ์š” ์˜ค๋Š˜์€ ์ฝ”ํ‹€๋ฆฐ์˜ Coroutine์— ๋Œ€ํ•˜์—ฌ ํฌ์ŠคํŒ…ํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. Coroutine์ด๋ž€? ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ํ•˜๋‚˜์˜ ์ž‘์—… ๋‹จ์œ„๋ฅผ Routine์ด๋ผ ํ•˜๋Š”๋ฐ ๊ฐ Routine์ด ํ˜‘์—…(Co)ํ•˜์—ฌ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ •์„ ํ•ฉ์น˜๊ฒŒ ๋˜์–ด Co + Roitine์ด๋ผ ๋ช…๋ช…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Coroutine์€ Thread์—์„œ ์‹คํ–‰๋˜๋Š” ์ž‘์€ Thread๋ผ ํ˜ธ์นญํ•  ์ˆ˜ ์žˆ์œผ๋‚˜ Thread์™€ ๊ฐ™์ด ์ž์‹ ์„ ์‚ฌ์šฉํ•  ์Šคํƒ์„ ๋”ฐ๋กœ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ฐ์ฒด ๋‹จ์œ„๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด Thread๋Œ€์‹  Coroutine์„ ๊ตณ์ด ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?? ๐Ÿค” Thread๋“ค์„ ์‚ฌ์šฉํ•˜์—ฌ Thread๊ฐ„ Context Switching์‹œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋งŽ์ด ๋ฐœ์ƒํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, Thread๊ฐ€ Task ์‹คํ–‰๋„์ค‘ Block์ด ๋ฐ˜๋ณต ๋œ๋‹ค๋ฉด Threa..

Tutorial/tutorial 2022.10.10

[Kotlin] ์ฝ”ํ‹€๋ฆฐ Thread(์Šค๋ ˆ๋“œ)์— ๊ด€ํ•˜์—ฌ

์•ˆ๋…•ํ•˜์„ธ์š” ์˜ค๋Š˜์€ ์ฝ”ํ‹€๋ฆฐ Thread์— ๋Œ€ํ•˜์—ฌ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ํฌ์ŠคํŒ…ํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. Thread(์Šค๋ ˆ๋“œ)๋ž€? ํ•œ ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ์ž‘์—…์˜ ๋‹จ์œ„๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜์—์„œ ์ฝ”ํ‹€๋ฆฐ์—์„œ๋Š” ์–ด๋–ป๊ฒŒ Thread๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿค” ๋จผ์ €, Threadํด๋ž˜์Šค ์ƒ์†์„ ํ†ตํ•ด ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. class SimpleThread(private val threadName : String , private val delayTime : Long) : Thread(threadName){ var flag = false override fun run() { while (!flag){ sleep(delayTime) println("ํ˜„์ œ ์“ฐ๋ ˆ๋“œ๋Š”${currentThread().name}์ž…๋‹ˆ๋‹ค.") } } } f..

Tutorial/tutorial 2022.10.04

[Kotlin] ์ฝ”ํ‹€๋ฆฐ ์—ฌ๋Ÿฌ๊ฐ€์ง€ Collection์— ๋Œ€ํ•˜์—ฌ

์•ˆ๋…•ํ•˜์„ธ์š” ์˜ค๋Š˜์€ ํฌ์ŠคํŒ…ํ•  ๋‚ด์šฉ์€ ์ฝ”ํ‹€๋ฆฐ Collection์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. ์ฒ˜์Œ ๋ธ”๋กœ๊ทธ์— ํฌ์ŠคํŒ… ํ–ˆ๋˜ ๋‚ด์šฉ์ด Array์˜ ์‚ฌ์šฉ๋ฒ•์ด์—ˆ๋Š”๋ฐ.. Collection์— ๋Œ€ํ•ด์„œ๋„ ์ข€ ๋” ๊ณต๋ถ€ํ•˜๊ฒŒ ๋˜์–ด ์ด๋ ‡๊ฒŒ ํฌ์ŠคํŒ…ํ•ฉ๋‹ˆ๋‹ค :) Collection(์ปฌ๋ ‰์…˜)์ด๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”? ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๊ณ  ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋™์ž‘ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ํด๋ž˜์Šค , ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ , ํ•จ์ˆ˜๋“ค์˜ ๋ชจ์ž„ ์ด๋ผ๊ณ  ์„ค๋ช… ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Collection์„ ๊ณต๋ถ€ํ•˜๋‹ค ๋ณด๋ฉด ์ ˆ๋Œ€ ๋น ์งˆ ์ˆ˜ ์—†๋Š” 1๊ฐ€์ง€! ๋ฐ”๋กœ Gneneric(์ œ๋„ค๋ฆญ)์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด Generic(์ œ๋„ค๋ฆญ)์ด๋ž€? ํด๋ž˜์Šค ๋˜๋Š” ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•  ํƒ€์ž…์„ ์™ธ๋ถ€์—์„œ ์ธ์ž๋กœ ๋ฐ›๊ณ  ํ•„์š”ํ•˜๋ฉด ๋ฆฌํ„ด ํƒ€์ž…์„ ์ •์˜ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ ํƒ€์ž…์„ ์ œํ•œ ์ œํ•œ..

Tutorial/tutorial 2022.09.29

[Kotlin] ์ฝ”ํ‹€๋ฆฐ Property ์œ„์ž„

์•ˆ๋…•ํ•˜์„ธ์š” ์˜ค๋Š˜์€ Kotlin ํ”„๋กœํผํ‹ฐ ์œ„์ž„์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœํผํ‹ฐ ์œ„์ž„์ด๋ž€? ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’ ์„ค์ •(set)/๊ฐ€์ ธ์˜ค๊ธฐ(get)๋ฅผ ๋‹ค๋ฅธ class ๋ฐ ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ์œ„์ž„ํ•˜๋„๋ก ํ•˜๋Š” ๋™์ž‘์œผ๋กœ ๋’ท๋ฐ›์นจ ํ•„๋“œ(Backing field)์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ - val ์˜ ๊ฒฝ์šฐ : getValue()๋งŒ ๊ตฌํ˜„ - var ์˜ ๊ฒฝ์šฐ : setValue() / getValue() ๋‘˜๋‹ค ๊ตฌํ˜„ by ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ์œ„์ž„ํ•  ๊ฐ์ฒด๋ฅผ ํ”„๋กœํผํ‹ฐ ๋’ค์— ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค. ์•„์šธ๋Ÿฌ ์œ„์ž„ํ•  getValue()์™€ setValue()๋Š” operator ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์ œ ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. import kotlin.reflect.KProperty data class Customer(val id: Int = -1..

Tutorial/tutorial 2022.09.27

[Kotlin] Kotlin Property ๋’ท๋ฐ›์นจ ํ•„๋“œ(Backing Field)์˜ ์‚ฌ์šฉ๋ฒ•

์•ˆ๋…•ํ•˜์„ธ์š” Backing Filed(๋’ท๋ฐ›์นจ ํ•„๋“œ)์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. ์šฐ์„  Java์—์„œ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๊ฒƒ์„ Kotlin์—์„œ๋Š” Property(์†์„ฑ)์ด๋ผ๊ณ  ์นญํ•ฉ๋‹ˆ๋‹ค. Kotlin์—์„œ๋Š” ์„ ์–ธ ํ‚ค์›Œ๋“œ์— ๋”ฐ๋ผ ์ž๋™์œผ๋กœ ์ ‘๊ทผ์ž ๋ฉ”์„œ๋“œ๊ฐ€ ์ƒ์„ฑ๋˜๊ฒŒ ๋˜๋Š”๋ฐ, - val ์˜ ๊ฒฝ์šฐ : getter ๋งŒ ์กด์žฌ - var ์˜ ๊ฒฝ์šฐ : setter / getter ๋‘˜ ๋‹ค ์กด์žฌ ์ƒ์„ฑ๋˜๋Š” ๋ฐฉ์‹์€ ์œ„์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. Backing Field๋Š” ์œ„ setter / getter๋ฅผ ์žฌ์ •์˜ํ•˜์—ฌ ์†์„ฑ๊ฐ’์„ ์ˆ˜์ • , ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉฐ ์„ค๋ช… ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. class Person{ val name = "DEV yo" get() = field.uppercase(Locale.getDefaul..

Tutorial/tutorial 2022.09.21

[Kotlin] ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ•จ์ˆ˜(function)์˜ ์‚ฌ์šฉ๋ฒ•

์•ˆ๋…•ํ•˜์„ธ์š” ์˜ค๋Š˜์€ Kotlin์—์„œ ์ œ๊ณตํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํ•จ์ˆ˜๋“ค์— ๋Œ€ํ•ด์„œ ๊ณต๋ถ€ํ•œ ๊ฒƒ์„ ์ •๋ฆฌํ•ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค. Kotlin์—์„œ๋Š” Java์™€ ๋‹ค๋ฅด๊ฒŒ fun์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ๋กœ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. : ๋’ค์—๋Š” ๋ฐ˜ํ™˜ ํƒ€์ž…์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. Unit์€ ์ž๋ฐ”์—์„œ ์‚ฌ์šฉ๋˜๋Š” void์™€ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. fun testFunction(param1 : String , param2: String) : Stirng { //todo something } fun testUnitFunction() : Unit { //todo something ์œ„ Unit์€ ์ƒ๋žต ๊ฐ€๋Šฅํ•˜๋‹ค. } ์ด์ œ Kotlin์—์„œ ์ œ๊ณตํ•˜๋Š” ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ•จ์ˆ˜๋“ค์— ๋Œ€ํ•ด ์•Œ์•„๋ด…์‹œ๋‹ค. โ–ช๏ธ Default ์ง€์ • ํ•จ์ˆ˜ & ๋ณ€์ˆ˜ ์ง€์ • ํ•จ์ˆ˜ ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์„ ๊ธฐ๋ณธ..

Tutorial/tutorial 2022.09.17