๐Ÿค– ์•ˆ๋“œ๋กœ์ด๋“œ

varํ•œ๋ฒˆ ์„ ์–ธํ•ด๋‘” ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค. valํ•œ๋ฒˆ ์„ ์–ธํ•ด๋‘” ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค.val์€ ํ• ๋‹น๋œ ๊ฐ์ฒด๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†์„ ๋ฟ์ด์ง€ ๊ฐ์ฒด ๋‚ด๋ถ€์˜ ์†์„ฑ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š”๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์ƒ์ˆ˜ํ•œ๋ฒˆ ์„ ์–ธํ•ด๋‘” ๋ณ€์ˆ˜์˜ ๊ทธ ๋ฌด์—‡๋„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค. ์ปดํŒŒ์ผ ์‹œ์ ์— ๊ฒฐ์ •๋˜๋Š” ์ ˆ๋Œ€ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋Š” ๊ฐ’์ด๋‹ค.์„ ์–ธํ• ๋•Œ val์•ž์— const๋ฅผ ๋ถ™์ด๋ฉด ๋œ๋‹ค.์ƒ์ˆ˜๋กœ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋Š”๊ฒƒ์€ ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.(String์ž๋ฃŒํ˜• ํฌํ•จ) ๋Ÿฐํƒ€์ž„์— ์ƒ์„ฑ๋  ์ˆ˜ ์žˆ๋Š” ์ผ๋ฐ˜์ ์ธ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋“ค์€ ๋‹ด์„ ์ˆ˜ ์—†๋‹ค.์ƒ์ˆ˜๋Š” ํด๋ž˜์Šค์˜ ์†์„ฑ์ด๋‚˜ ์ง€์—ญ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.๋ฐ˜๋“œ์‹œ companion object์— ์„ ์–ธํ•˜์—ฌ ๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ์ƒ๊ด€์—†์ด ํด๋ž˜์Šค์™€ ๊ด€๊ณ„๋œ ๊ณ ์ •์ ์ธ ๊ฐ’์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.์ƒ์ˆ˜์˜ ์ด๋ฆ„์„ ๋งŒ๋“ค๋•Œ๋Š” ๊ด€๋ก€์ ์œผ๋กœ ๋Œ€๋ฌธ์ž์™€ ์–ธ๋”๋ฐ”๋ฅผ ์‚ฌ์šฉํ•˜..
์ปฌ๋ ‰์…˜์„ ๋ฐ˜๋ณต๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ํฌํ•จ๋œ ์š”์†Œ๋“ค์„ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์„œ ์‚ฌ์šฉํ–ˆ๋‹ค.ํ•˜์ง€๋งŒ ์ฝ”ํ‹€๋ฆฐ์€ ํ•จ์ˆ˜ํ˜• ์–ธ์–ด์˜ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ข€ ๋” ํŽธ๋ฆฌํ•˜๊ฒŒ ์ปฌ๋ ‰์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ปฌ๋ ‰์…˜ ํ•จ์ˆ˜list, set, map๊ณผ ๊ฐ™์€ ์ปฌ๋ ‰์…˜ ๋˜๋Š” ๋ฐฐ์—ด์— ์ผ๋ฐ˜ ํ•จ์ˆ˜ ๋˜๋Š” ๋žŒ๋‹ค ํ•จ์ˆ˜ ํ˜•ํƒœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ˜๋ณต๋ฌธ ์—†์ด๋„ ์š”์†Œ๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ์ˆœํšŒํ•˜๊ฑฐ๋‚˜ ์กฐ๊ฑด์„ ๊ฑธ๊ณ  ๊ตฌ์กฐ์˜ ๋ณ€๊ฒฝ๊นŒ์ง€ ๊ฐ€๋Šฅํ•œ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ•จ์ˆ˜๋ฅผ ์ง€์นญํ•œ๋‹ค. forEach์ปฌ๋ ‰์…˜ ๊ฐ์ฒด์— ์‚ฌ์šฉํ•˜๋ฉด ์ค‘๊ด„ํ˜ธ ์•ˆ์—์„œ ์ปฌ๋ ‰์…˜์— ํฌํ•จ๋œ ๋ชจ๋“  ์š”์†Œ๋ฅผ it์ด๋ผ๋Š” ๋ณ€์ˆ˜๋กœ ์ˆœ์„œ๋Œ€๋กœ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค.collection.forEach{ println(it)}  filter์ปฌ๋ ‰์…˜ ๊ฐ์ฒด์— ์‚ฌ์šฉํ•˜๋ฉด ์ค‘๊ด„ํ˜ธ ์•ˆ์—์„œ it์— ์กฐ๊ฑด์„ ๊ฑธ์–ด ์กฐ๊ฑด์— ๋งž๋Š” ๊ฐ์ฒด๋งŒ ๋‹ค์‹œ ์ปฌ๋ ‰์…˜์œผ๋กœ ๋งŒ๋“ค์–ด ๋ฐ˜ํ™˜ํ•œ๋‹ค.collection.forEach..
SetList์™€ ๋‹ฌ๋ฆฌ ์ˆœ์„œ๊ฐ€ ์ •๋ ฌ๋˜์ง€ ์•Š์œผ๋ฉฐ ์ค‘๋ณต์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š” ์ปฌ๋ ‰์…˜์ด๋‹ค.์ธ๋ฑ์Šค๋กœ ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์—†์œผ๋ฉฐ contains()๋กœ ๊ฐ์ฒด๊ฐ€ set์•ˆ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์‹์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค.Set๋„ List์ฒ˜๋Ÿผ MutableSet๊ฐ€ ์กด์žฌํ•œ๋‹ค.๊ฐ์ฒด์˜ ์ถ”๊ฐ€, ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•œ์ง€ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.์š”์†Œ์˜ ์ถ”๊ฐ€๋Š” add(), ์š”์†Œ์˜ ์‚ญ์ œ๋Š” remove() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ์˜ˆ์ œfun main(){ val a = mutableSetOf("์—ฐํ•„", "๋‹ฌ๋ ฅ", "์ง€์šฐ๊ฐœ") for(item in a){ println("$item") } a.add("ํ˜•๊ด‘ํŽœ") println(a) a.remove("๋‹ฌ๋ ฅ") println(a) println(a.con..
Data Class๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐ์— ์ตœ์ ํ™”๋œ ํด๋ž˜์Šค์ด๋‹ค.5๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ๋‚ด๋ถ€์ ์œผ๋กœ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•ด์ค€๋‹ค.equals()๋‚ด์šฉ์˜ ๋™์ผ์„ฑ์„ ํŒ๋‹จํ•œ๋‹ค.hashcode()ํด๋ž˜์Šค์˜ ๋‚ด์šฉ์—์„œ ๊ณ ์œ ์˜ ํ•ด์‰ฌ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค.๊ฐ์ฒด์˜ ๋‚ด์šฉ์—์„œ ๊ณ ์œ ํ•œ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.toString()ํฌํ•จ๋œ ์†์„ฑ์„ ๋ณด๊ธฐ์‰ฝ๊ฒŒ ๋‚˜ํƒ€๋‚ธ๋‹ค.copy()๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ๋˜‘๊ฐ™์€ ๋‚ด์šฉ์˜ ์ƒˆ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ ๋‹ค.copy() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ์ƒˆ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ๋Š” ๋˜‘๊ฐ™์€ ๋‚ด์šฉ์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์ƒ์„ฑ์ž์™€ ๋˜‘๊ฐ™์€ ํ˜•ํƒœ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ฃผ์–ด  ์ผ๋ถ€ ์†์„ฑ์„ ๋ณ€๊ฒฝํ•ด ์ค„ ์ˆ˜๋„ ์žˆ๋‹ค.์•„๋ฌด ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์—†์œผ๋ฉด ๋˜‘๊ฐ™์€ ๋‚ด์šฉ์œผ๋กœ ์ƒ์„ฑํ•œ๋‹ค.ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ต์ฒดํ•˜์—ฌ ์ƒ์„ฑํ•œ๋‹ค.componentX()์†์„ฑ์„ ์ˆœ์„œ๋Œ€๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.component1(), component2..
์ฝ”ํ‹€๋ฆฐ์ด ์ง€์›ํ•˜๋Š” ํด๋ž˜์Šค ์œ ํ˜• ์ค‘ ํด๋ž˜์Šค ์•ˆ์— ํด๋ž˜์Šค๊ฐ€ ์ค‘์ฒฉ๋˜๋Š” ์œ ํ˜•์€ ์ค‘์ฒฉ ํด๋ž˜์Šค์™€ ๋‚ด๋ถ€ ํด๋ž˜์Šค ๋‘๊ฐ€์ง€๋‹ค. ์ค‘์ฒฉ ํด๋ž˜์Šค(Nested Class)ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๊ฐ€ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ๊ธฐ๋Šฅ๊ณผ ๊ฐ•ํ•˜๊ฒŒ ์—ฐ๊ด€๋˜์–ด ์žˆ๋‹ค๋Š” ์˜๋ฏธ๋ฅผ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ํ˜•์‹์œผ๋กœ ์‚ฌ์šฉํ• ๋•Œ๋Š” "(์™ธ๋ถ€ํด๋ž˜์Šค ์ด๋ฆ„).(์ค‘์ฒฉํด๋ž˜์Šค ์ด๋ฆ„)" ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.ํ˜•ํƒœ๋งŒ ๋‚ด๋ถ€์— ์กด์žฌํ•  ๋ฟ ์‹ค์งˆ์ ์œผ๋กœ๋Š” ์™ธ๋ถ€์™€ ์ค‘์ฒฉ ํด๋ž˜์Šค ์„œ๋กœ ๋‚ด์šฉ์„ ๊ณต์œ ํ•  ์ˆ˜ ์—†๋Š” ๋ณ„๊ฐœ์˜ ํด๋ž˜์Šค๋‹ค. ๋‚ด๋ถ€ ํด๋ž˜์Šค์ค‘์ฒฉ ํด๋ž˜์Šค ๋Œ€์‹  ๋‚ด๋ถ€ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.์ค‘์ฒฉ ํด๋ž˜์Šค์— "inner"๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ๋ถ™์ด๋ฉด ๋œ๋‹ค.ํ˜ผ์ž์„œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์—†๊ณ  ์™ธ๋ถ€ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๊ฐ€ ์žˆ์–ด์•ผ๋งŒ ์ƒ์„ฑ๊ณผ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ํด๋ž˜์Šค๋‹ค.๊ทธ๋ž˜์„œ ์™ธ๋ถ€ ํด๋ž˜์Šค์˜ ์†์„ฑ๊ณผ ํ•จ์ˆ˜์˜ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์˜ˆ์ œfun main(){ Outer..
overloading๊ฐ™์€ ์Šค์ฝ”ํ”„ ์•ˆ์—์„œ ๊ฐ™์€ ์ด๋ฆ„์˜ ํ•จ์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.ํ•จ์ˆ˜ ์ด๋ฆ„์ด ๊ฐ™์•„๋„ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ž๋ฃŒํ˜•์ด ๋‹ค๋ฅด๊ฑฐ๋‚˜ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ๊ฐฏ์ˆ˜๊ฐ€ ๋‹ค๋ฅด๋‹ค๋ฉด ์„œ๋กœ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.fun hello(x: Int)fun hello(x: Int, text: String)fun hello(x: Int, y: Int)ํ•˜์ง€๋งŒ ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ์ด๋ฆ„๋งŒ ๋‹ค๋ฅด๊ณ  ์ž๋ฃŒํ˜•์ด ๊ฐ™๋‹ค๋ฉด ์˜ค๋ฒ„๋กœ๋”ฉ์„ ํ•  ์ˆ˜ ์—†๋‹ค.fun hello(x: Int, y: Int)fun hello(a: Int, b: Int)  ์˜ˆ์ œfun main(){ read(24) read("ํ™๊ธธ๋™")}fun read(x: Int){ println("์ˆซ์ž $x ์ž…๋‹ˆ๋‹ค")}fun read(x: String){ println("๋ฌธ์ž $x ..
null ์ƒํƒœ ํ™•์ธnull์ƒํƒœ๋กœ ์†์„ฑ์ด๋‚˜ ํ•จ์ˆ˜๋ฅผ ์“ฐ๋ ค๊ณ  ํ•˜๋ฉด null pointer exception์ด ๋ฐœ์ƒํ•œ๋‹ค.null pointer exception : null์ธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๋ฉด ๋ฐœ์ƒํ•˜๋Š” ์˜ค๋ฅ˜๊ทธ๋ž˜์„œ nullable ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ• ๋•Œ๋Š” nullํ™•์ธ ์—†์ด๋Š” ์ฝ”๋“œ๊ฐ€ ์ปดํŒŒ์ผ ๋˜์ง€ ์•Š๋Š”๋‹ค.var sample: String? = null// if๋ฌธ์œผ๋กœ nullalbe ํ™•์ธif(sample != null) println(sample.toUpperCase())null ์ฒดํฌ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•ด ์ผ์ผํžˆ if๋ฌธ์œผ๋กœ ์กฐ๊ฑด์„ ํ™•์ธํ•˜๋Š” ๋Œ€์‹  ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์“ธ ์ˆ˜ ์žˆ๋‹ค.?. (null safe operator)?: (elvis operator)!!. (non-null assertion operator)  ?. (null safe o..
(๋ฌธ์ž์—ด).length๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ์ •์ˆ˜ํ˜•์œผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค(๋ฌธ์ž์—ด).toLowercase์˜๋ฌธ ์ „์ฒด๋ฅผ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค(๋ฌธ์ž์—ด).toUppercase์˜๋ฌธ ์ „์ฒด๋ฅผ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค(๋ฌธ์ž์—ด).split("(๊ธฐ์ค€๋ฌธ์ž)")ํŠน์ • ๋ฌธ์ž์—ด์„ ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์ž๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ๋กœ ๋‚˜๋ˆ„์–ด ๋ฐฐ์—ด์— ๋‹ด์€ ํ›„ ๋ฐ˜ํ™˜ํ•œ๋‹ค์ด๋•Œ ๊ธฐ์ค€ ๋ฌธ์ž๋ฅผ delimiter๋ผ๊ณ ๋ถ€๋ฅธ๋‹ค.์ž๋ฐ”์™€ ๋‹ฌ๋ฆฌ split์— ์ •๊ทœ์‹์ด ์•„๋‹Œ ์ผ๋ฐ˜ ๋ฌธ์ž์—ด์„ ๋„ฃ์–ด๋„ ๋™์ž‘ํ•œ๋‹ค.(๋ฌธ์ž์—ด ๋ฐฐ์—ด).joinToString()๋ฌธ์ž์—ด์ด ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๋ฐฐ์—ด์„ ๋‹ค์‹œ ํ•˜๋‚˜๋กœ ํ•ฉ์นœ๋‹ค.๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์•„๋ฌด๊ฒƒ๋„ ๋„ฃ์ง€ ์•Š์œผ๋ฉด ๊ทธ๋ƒฅ ํ•ฉ์ณ์ง€๊ณ , ๋ฌธ์ž์—ด์„ ๋„ฃ์œผ๋ฉด ๊ทธ ๋ฌธ์ž์—ด์„ ์‚ฌ์ด์— ๋„ฃ์–ด์ค€๋‹ค.(๋ฌธ์ž์—ด).substring((์‹œ์ž‘)..(๋))๋ฌธ์ž์—ด ์ค‘ ์ผ๋ถ€๋งŒ ๊ฐ€์ ธ์˜ดfor๋ฌธ์—์„œ ์‚ฌ์šฉํ–ˆ๋˜ InRange ํ˜•์‹์„ ์‚ฌ์šฉ..
์ œ๋„ˆ๋ฆญ์ด ํ•„์š”ํ•œ ์ด์œ ํด๋ž˜์Šค A์™€ ์ด๋ฅผ ์ƒ์†๋ฐ›์€ ํด๋ž˜์Šค B๊ฐ€ ์žˆ๋‹ค.๋‘ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ณต์šฉ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํ•˜๋‚˜์˜ ํ•จ์ˆ˜์— ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์œผ๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?์Šˆํผํด๋ž˜์Šค์˜ ์ž๋ฃŒํ˜•์ธ A์˜ ์ž๋ฃŒํ˜•์œผ๋กœ ๋ฐ›์œผ๋ฉด B๋Š” ์ž๋™์œผ๋กœ A๋กœ ์บ์ŠคํŒ… ๋œ๋‹ค. โžก๏ธ ๋‘ ํด๋ž˜์Šค ๋ชจ๋‘ ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.ํ•˜์ง€๋งŒ ์บ์ŠคํŒ… ์—ฐ์‚ฐ์„ ๊ฑฐ์น˜๋Š”๊ฒƒ์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์†๋„๋ฅผ ์ €ํ•˜์‹œํ‚จ๋‹ค. ์ด๋ฅผ ์ œ๋„ˆ๋ฆญ์ด ๋ณด์™„ํ•ด ์ค„ ์ˆ˜ ์žˆ๋‹ค.fun castingExam(var a: A) // B๋ฅผ ๋„ฃ์–ด๋„ A๋กœ ์บ์ŠคํŒ…๋œ๋‹ค.  ์ œ๋„ˆ๋ฆญํด๋ž˜์Šค๋‚˜ ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ž๋ฃŒํ˜•์„ ์™ธ๋ถ€์—์„œ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.ํ•จ์ˆ˜๋‚˜ ํด๋ž˜์Šค๋ฅผ ์„ ์–ธํ•  ๋•Œ ๊ณ ์ •์ ์ธ ์ž๋ฃŒํ˜• ๋Œ€์‹  ์‹ค์ œ ์ž๋ฃŒํ˜•์œผ๋กœ ๋Œ€์ฒด๋˜๋Š” ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ฐ›์•„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.ํƒ€์ž… ํŒŒ๋ผ๋ฏธํ„ฐ์— ํŠน์ • ์ž๋ฃŒํ˜•์ด ํ• ๋‹น๋˜๋ฉด ์ œ๋„ˆ๋ฆญ์„ ์‚ฌ์šฉํ•˜๋Š” ..
๋น„์œ ๋ฅผ ํ†ตํ•œ ๋‹คํ˜•์„ฑ์˜ ๊ฐœ๋…์Œ๋ฃŒ์—๋Š” ์—ฌ๋Ÿฌ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค. ์ฝœ๋ผ, ์ฃผ์Šค, ์ปคํ”ผ ๋“ฑ..์ด ์ค‘ ์ฝœ๋ผ๋ฅผ ๊ณ ๋ฅผ ๋•Œ ์ฝœ๋ผ๋ฅผ ์ฝœ๋ผ ์ž์ฒด๋กœ๋„ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ, ์Œ๋ฃŒ๋ผ๋Š” ํŠน์„ฑ์œผ๋กœ๋„ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“œ๋Š”๊ฒƒ์ด ๋‹คํ˜•์„ฑ์˜ ๊ฐœ๋…์ด๋‹ค. ์ฝ”ํ‹€๋ฆฐ์˜ ๋‚ด๋ถ€ ๋™์ž‘์Œ๋ฃŒ๋ผ๋Š” ์Šˆํผํด๋ž˜์Šค์™€ ์ด๋ฅผ ์ƒ์†๋ฐ›๋Š” ์ฝœ๋ผ๋ผ๋Š” ์„œ๋ธŒ ํด๋ž˜์Šค๊ฐ€ ์žˆ๋‹ค์ฝœ๋ผ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๋•Œ ์Šˆํผํด๋ž˜์Šค์˜ ๊ณต๊ฐ„์— ์Œ๋ฃŒ์˜ ๋‚ด์šฉ์„ ๋‹ด๋Š” ๊ฐ์ฒด๊ณต๊ฐ„์— ์ฝœ๋ผ์˜ ๋‚ด์šฉ์„ ๋‹ด๋Š” ์ถ”๊ฐ€ ๊ณต๊ฐ„์ด ์ƒ์„ฑ๋œ๋‹ค.์ด๋ ‡๊ฒŒ ๋งŒ๋“ค์–ด์ง„ ์ฝœ๋ผ์˜ ์ธ์Šคํ„ด์Šค๋Š” ์Œ๋ฃŒ์˜ ๊ณต๊ฐ„์„ ๋‹ด๋Š” ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๋ฉด ์Œ๋ฃŒ์˜ ๊ธฐ๋Šฅ๋งŒ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๊ณ , ์ฝœ๋ผ์˜ ๊ธฐ๋Šฅ์„ ๋‹ด๋Š” ๋ณ€์ˆ˜์— ์ €์žฅํ•˜๋ฉด ์ฝœ๋ผ์˜ ๊ธฐ๋Šฅ๊นŒ์ง€ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.var a: Drink = Cola() // ์—…์บ์ŠคํŒ…. ์Œ๋ฃŒ์˜ ๊ธฐ๋Šฅ๋งŒ ์‚ฌ์šฉ. ์ฝœ๋ผ์˜ ์ถ”๊ฐ€๊ณต๊ฐ„์€ ์‚ฌ์šฉ ๋ถˆ๊ฐ€var b: Cola = Cola()..
์˜ค๋ธŒ์ ํŠธ์ƒ์„ฑ์ž ์—†์ด ์ง์ ‘ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด๋‚ธ๋‹ค.์˜ค๋ธŒ์ ํŠธ ๊ทธ ์ž์ฒด๊ฐ€ ๊ฐ์ฒด๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ƒ์„ฑ์ž๊ฐ€ ํ•„์š” ์—†๋‹ค.ํด๋ž˜์Šค๋Š” ๋‚ด๋ถ€์— ์žˆ๋Š” ์†์„ฑ์ด๋‚˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ƒ์„ฑ์ž๋ฅผ ํ†ตํ•ด ์‹ค์ฒด๊ฐ€ ๋˜๋Š” ์ธ์Šคํ„ด์Šค ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์•ผํ•œ๋‹ค.ํ•˜์ง€๋งŒ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ธ์Šคํ„ด์Šค ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•˜์ง€ ์•Š๊ณ  ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋งŒ์œผ๋กœ ๊ณตํ†ต์ ์ธ ์†์„ฑ๊ณผ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ์ฝ”๋“œ์—์„œ๋Š” ํด๋ž˜์Šค๋ฅผ ์“ธ ํ•„์š” ์—†์ด ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์„ ์–ธ์–ด์ฐจ์›์—์„œ ์ง€์›ํ•˜๋Š”๊ฒƒ์ด๋‹ค.์‹ฑ๊ธ€ํ†ค ํŒจํ„ด : ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฅผ ๋‹จ ํ•˜๋‚˜๋งŒ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด  ์˜ค๋ธŒ์ ํŠธ ์˜ˆ์ œ์•„๋ฌด๊ณณ์—๋‚˜ ํ˜ธ์ถœํ•˜์—ฌ ํ˜ธ์ถœํ•œ ํšŸ์ˆ˜๋ฅผ ์„ธ๊ฑฐ๋‚˜ ์ดˆ๊ธฐํ™” ํ•  ์ˆ˜ ์žˆ๋Š” Counter๋ผ๋Š” ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž.์˜ค๋ธŒ์ ํŠธ๋Š” ๋ณ„๋„์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ธŒ์ ํŠธ ์ด๋ฆ„์— ์ง์ ‘ ์ฐธ์กฐ์—ฐ์‚ฐ์ž๋ฅผ ๋ถ™์—ฌ์„œ ์‚ฌ์šฉํ•œ๋‹ค.fu..
์Šค์ฝ”ํ”„ ํ•จ์ˆ˜๋ฅผ ์•Œ์•„๋ณด๊ธฐ ์ „์— ๋žŒ๋‹ค ํ•จ์ˆ˜์˜ ํŠน๋ณ„ํ•œ ๊ธฐ๋Šฅ ๋ช‡๊ฐ€์ง€๋ฅผ ์‚ดํŽด๋ณด์ž.๋žŒ๋‹ค ํ•จ์ˆ˜์˜ ํŠน๋ณ„ํ•œ ๊ธฐ๋Šฅ๋“ค๋žŒ๋‹ค ํ•จ์ˆ˜๋„ ์ผ๋ฐ˜ ํ•จ์ˆ˜์ฒ˜๋Ÿผ ์—ฌ๋Ÿฌ ๊ตฌ๋ฌธ์ด ์ˆ˜ํ–‰ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฐธ๊ณ ๋กœ ๋žŒ๋‹ค ํ•จ์ˆ˜๊ฐ€ ์—ฌ๋Ÿฌ ์ค„๋กœ ๊ตฌํ˜„๋œ๋‹ค๋ฉด ๋งˆ์ง€๋ง‰ ์ค„์˜ ๊ฒฐ๊ณผ๊ฐ’์ด ๋ฐ˜ํ™˜๋œ๋‹ค.val c: (Int, Int) -> Int = {a,b -> println("$a $b") println("์—ฌ๋Ÿฌ๊ตฌ๋ฌธ") println("์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋กฑ!") a+b // a+b๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค.}๋žŒ๋‹คํ•จ์ˆ˜์— ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์—†๋‹ค๋ฉด ์‹คํ–‰ํ•  ๊ตฌ๋ฌธ๋“ค๋งŒ ๋‚˜์—ดํ•˜๋ฉด ๋œ๋‹ค.val a:() -> Unit = {println("ํŒŒ๋ผ๋ฏธํ„ฐ ์—†์Œ!!!")}ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ํ•˜๋‚˜๋ฟ์ด๋ผ๋ฉด 'it'์„ ์‚ฌ์šฉํ•œ๋‹ค. ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„์„ ์ƒ๋žตํ•˜๊ณ  'it'์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ๋กœ ๋Œ€์ฒด ๊ฐ€๋Šฅํ•˜๋‹ค.val c:(String) ->..