[Kotlin] ๋žŒ๋‹ค์‹ / SAM๋ณ€ํ™˜
ยท
๊ฐœ๋ฐœ ํƒ€์ž„์บก์Š/Kotlin
๋žŒ๋‹ค์‹ ๋žŒ๋‹ค์‹์€ ํ•˜๋‚˜์˜ ํ•จ์ˆ˜๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋ฉฐ, ์ต๋ช…ํด๋ž˜์Šค๋‚˜ ์ต๋ช… ํ•จ์ˆ˜๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์–ด ์œ ์šฉํ•˜๋‹ค. //๋‘ ์ˆ˜๋ฅผ ์ธ์ˆ˜๋กœ ๋ฐ›์•„์„œ ๋”ํ•ด์ฃผ๋Š” add๋ฉ”์„œ๋“œ fun add(x: Int, y: Int): Int { return x + y } //์œ„ ์ฝ”๋“œ๋Š” ์ด๋ ‡๊ฒŒ ํ‘œํ˜„ ๊ฐ€๋Šฅํ•˜๋‹ค. fun add(x: Int, y: Int) = x + y ์ด๋ ‡๊ฒŒ๋„ ํ‘œํ˜„๊ฐ€๋Šฅํ•˜๋‹ค. ์ธ์ˆ˜๋ชฉ๋ก์„ ๋‚˜์—ดํ•˜๊ณ  -> ์ดํ›„์— ๋ณธ๋ฌธ์ด ์œ„์น˜ํ•œ๋‹ค. //{์ธ์ˆ˜1: ํƒ€์ž…1, ์ธ์ˆ˜2: ํƒ€์ž…2 -> ๋ณธ๋ฌธ} var add = { x: Int, y: Int -> x + y } println(add(2, 5)) //7 SAM ๋ณ€ํ™˜ ์ฝ”ํ‹€๋ฆฐ์—์„œ๋Š” ์ถ”์ƒ ๋ฉ”์„œ๋“œ ํ•˜๋‚˜๋ฅผ ์ธ์ˆ˜๋กœ ์‚ฌ์šฉํ•  ๋–„๋Š” ํ•จ์ˆ˜๋ฅผ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•˜๋ฉด ํŽธํ•˜๋‹ค. ์ž๋ฐ”๋กœ ์ž‘์„ฑ๋œ ๋ฉ”์„œ๋“œ๊ฐ€ ํ•˜๋‚˜์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ..
[Kotlin] ๋ฆฌ์ŠคํŠธ / ๋งต / ์ง‘ํ•ฉ
ยท
๊ฐœ๋ฐœ ํƒ€์ž„์บก์Š/Kotlin
๋ฆฌ์ŠคํŠธ ๋ฆฌ์ŠคํŠธ๋Š” ๋ฐฐ์—ด์ฒ˜๋Ÿผ ๊ฐ™์€ ์ž๋ฃŒํ˜•์˜ ๋ฐ์ดํ„ฐ๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค. ์š”์†Œ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ์ฝ๊ธฐ ์ „์šฉ ๋ฆฌ์ŠคํŠธ๋Š” listOf() ๋ฉ”์„œ๋“œ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. val foods: List = listOf("๋ผ๋ฉด", "๊ฐˆ๋น„", "๋ˆ๊ฐ€์Šค") //ํ˜• ์ถ”๋ก ์œผ๋กœ ์ž๋ฃŒํ˜• ์ƒ๋žต๊ฐ€๋Šฅ val foods = listOf("๋ผ๋ฉด", "๊ฐˆ๋น„", "๋ˆ๊ฐ€์Šค") ์š”์†Œ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ๋Š” mutableListOf() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. val foods = mutableListOf("๋ผ๋ฉด", "๊ฐˆ๋น„", "๋ˆ๊ฐ€์Šค") //ํŒŒ์Šคํƒ€๋ฅผ ๋งจ ๋’ค์— ์ถ”๊ฐ€ foods.add("ํŒŒ์Šคํƒ€") //๋งจ ์•ž์˜ ์•„์ดํ…œ ์‚ญ์ œ foods.removeAt(0) //1๋ฒˆ์งธ ์•„์ดํ…œ์„ ๊ฐ์žํƒ•์œผ๋กœ ๋ณ€๊ฒฝ foods[1] = "๊ฐ์žํƒ•" println(..
[Kotlin] null ์ฒ˜๋ฆฌ
ยท
๊ฐœ๋ฐœ ํƒ€์ž„์บก์Š/Kotlin
null ์ฝ”ํ‹€๋ฆฐ์—์„œ๋Š” null๊ฐ’์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. //์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š์•„ ์—๋Ÿฌ ๋ฐœ์ƒ val a : String //null๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•ด์„œ ์—๋Ÿฌ ๋ฐœ์ƒ val a : String = null //OK val a : String? = null #์ฝ”ํ‹€๋ฆฐ์—์„œ null๊ฐ’์„ ํ—ˆ์šฉํ•˜๋ ค๋ฉด ์ž๋ฃŒํ˜•์˜ ์˜ค๋ฅธ์ชฝ์— ? ๊ธฐํ˜ธ๋ฅผ ๋ถ™์—ฌ์ฃผ๋ฉด ๋œ๋‹ค. lateinit lateinit var a : String a = "hello" println(a) #์•ˆ๋“œ๋กœ์ด๋“œ ๊ฐœ๋ฐœ ์‹œ ์ดˆ๊ธฐํ™”๋ฅผ ๋‚˜์ค‘์— ํ•  ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์ด๋•Œ lateinit ํ‚ค์›Œ๋“œ๋ฅผ ๋ณ€์ˆ˜ ์„ ์–ธ ์•ž์— ์ถ”๊ฐ€ํ•˜๋ฉด ๋œ๋‹ค. lateinit ์‚ฌ์šฉ ์กฐ๊ฑด #var ๋ณ€์ˆ˜์—์„œ๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅ #null๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์—†๋‹ค. #์ดˆ๊ธฐํ™” ์ „์—๋Š” ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. #Int, Long, Double, Floa..
[Kotlin] ์ธํ„ฐํŽ˜์ด์Šค
ยท
๊ฐœ๋ฐœ ํƒ€์ž„์บก์Š/Kotlin
์ธํ„ฐํŽ˜์ด์Šค ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ถ”์ƒ ํด๋ž˜์Šค์™€ ๋น„์Šทํ•˜์ง€๋งŒ ๋‹จ์ผ ์ƒ์†๋งŒ ๋˜๋Š” ํด๋ž˜์Šค์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ๋‹ค์ค‘ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค์˜ ์„ ์–ธ interface Runnable { fun run() fun fastRun() = println("๋นจ๋ฆฌ ๋‹ฌ๋ฆฐ๋‹ค") } #์ถ”์ƒ๋ฉ”์„œ๋“œ๋Š” abstract ํ‚ค์›Œ๋“œ๊ฐ€ ํ•„์š”ํ•œ๋ฐ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ๋Š” ์ƒ๋žต ๊ฐ€๋Šฅํ•˜๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ตฌํ˜„์ด ์—†๋Š” ๋ฉ”์„œ๋“œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ตฌํ˜„๋œ ๋ฉ”์„œ๋“œ๋„ ํฌํ•จ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„ class Human : Runnable { override fun run(){ println("๋‹ฌ๋ฆฐ๋‹ค") } } #์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•  ๋•Œ๋Š” ์ธํ„ฐํŽ˜์ด์Šค ์ด๋ฆ„์„ : ๋’ค์— ์ ๋Š”๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฏธ๊ตฌํ˜„ ๋ฉ”์„œ๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. ์ด๋•Œ override ํ‚ค์›Œ๋“œ๋ฅผ ๋ฉ”์„œ๋“œ ์•ž์— ์ถ”๊ฐ€ํ•œ๋‹ค. ์ƒ์†๊ณผ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ•จ๊ป˜ ๊ตฌํ˜„..