๐Ÿ”ฅTIL๐Ÿ”ฅ์ŠคํŒŒ๋ฅดํƒ€ | ์ปฌ๋ ‰์…˜

hyihyiยท2023๋…„ 12์›” 5์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
12/69
post-thumbnail

-์ ‘๊ทผ ์ œํ•œ์ž

๊ฐ์ฒด๋ฅผ ์ด์šฉํ•ด ๋ณ€์ˆ˜, ๋ฉ”์†Œ๋“œ์˜ ํ˜ธ์ถœ ์—ฌ๋ถ€๋ฅผ ์ ‘๊ทผํ•จ

default๋Š” public

ํ”„๋กœ์ ํŠธ -๋ชจ๋“ˆ,ํŒจํ‚ค์ง€,ํด๋ž˜์Šค
๋ชจ๋“ˆ -ํŒจํ‚ค์ง€,ํด๋ž˜์Šค
ํŒจํ‚ค์ง€ -ํด๋ž˜์Šค

private : ๋™์ผํ•œ ํด๋ž˜์Šค ๋‚ด๋ถ€์—์„œ๋งŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค

-์˜ˆ์™ธ ์ฒ˜๋ฆฌ์˜ ํ™œ์šฉ (try-catch, throw)

ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ „์— ์•Œ ์ˆ˜ ์žˆ๋Š” ์ปดํŒŒ์ผ ์—๋Ÿฌ : ์˜ค๋ฅ˜
ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ๋„์ค‘ ๋ฐœ์ƒํ•˜๋Š” ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ : ์˜ˆ์™ธ
์‹คํ–‰๋„์ค‘์— ๋ฐœ์ƒ๋˜๋Š” ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•จ

try-catch

์‹คํ–‰ํ•˜๋Š” ๋„์ค‘์— ์˜ˆ์™ธ๋‚˜์„œ ๊บผ์งˆ ๊ฑฐ ๊ฐ™์€๋ฐ?
->try๋กœ ๊ฐ์‹ธ๊ณ  ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์‹คํ–‰ํ•  ์ฝ”๋“œ๋ฅผ catch๋กœ ๊ฐ์Œˆ

throw

์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๋Š” ๊ฑด ์•„๋‹ˆ๊ณ  ์ข…๋ฃŒ๊ฐ€ ๋˜์ง€ ์•Š๊ฒŒ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๊ณ  ์•ˆ์ •์ ์œผ๋กœ ๋˜์ง€๋Š” ์—ญํ• 
->์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธฐ๊ฑฐ๋‚˜ ๊ธฐ๋ก์„ ํ•˜๊ณ  ์‹ถ์œผ๋ฉด try-catch๋ฌธ์„ ์จ์•ผ ํ•จ

-์˜ˆ์™ธ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ 

: ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ ๋„์ค‘์— ์ข…๋ฃŒ๋˜๋Š” ๊ฑด ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ์ž„

try-catch-finally

: finally์— ์ž‘์„ฑํ•˜๋Š” ์ฝ”๋“œ๋Š” ์˜ˆ์™ธ ์ฒ˜๋ฆฌ์™€ ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ์‹คํ–‰๋จ

-์ง€์—ฐ ์ดˆ๊ธฐํ™” (lateinit, lazy)

ํด๋ž˜์Šค๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ ์ดˆ๊ธฐ์˜ ๊ฐ’์„ ์ •์˜ํ•˜๊ธฐ ๋‚œ์ฒ˜ํ•ด์„œ ๋‚˜์ค‘์— ๋Œ€์ž…ํ•˜๊ธฐ ์œ„ํ•œ ๋ฌธ๋ฒ•
์ฝ”ํ‹€๋ฆฐ์€ ์•ˆ์ •์„ฑ์„ ์œ„ํ•ด ๋ฐ˜๋“œ์‹œ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ์ดˆ๊ธฐํ™”ํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•จ
๋ณ€์ˆ˜๋Š” lateinit, ์ƒ์ˆ˜๋Š” lazy

์•ˆ์ •์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ์ดˆ๊ธฐํ™”๋˜์—ˆ๋Š”์ง€ ํ™•์ธ
isInitialized ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๊ฐ’์ด ์•„๋‹ˆ๋ผ ์ฐธ์กฐํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— this:: ๋˜๋Š” ::๋ฅผ ๋ถ™์ž„ (true/false)

if(this::name.isInitialized) {
	println("์ด๋ฆ„์€: ${name} ์ž…๋‹ˆ๋‹ค.")
	println("๋‚˜์ด๋Š”: ${age} ์ž…๋‹ˆ๋‹ค.")
}

Q. lazy ์ง€์—ฐ์ดˆ๊ธฐํ™”???

-๋„ ์„ธ์ดํ”„ํ‹ฐ

์ฝ”ํ‹€๋ฆฐ์€ ์ž๋ฃŒํ˜•์—๋‹ค Null ์—ฌ๋ถ€๋ฅผ ๋ช…์‹œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž๋ฐ”๋ณด๋‹ค Null ์˜ˆ์™ธ๋กœ๋ถ€ํ„ฐ ์•ˆ์ „ํ•˜๋‹ค

๊ฐ•์ œ๋กœ null์ด ์•„๋‹ˆ๋ผ๊ณ  ํ•˜๋Š” !!๋Š” ์ตœ๋Œ€ํ•œ ์‚ฌ์šฉ์„ ์ง€์–‘ํ•˜์ž

๋„ ์„ธ์ดํ”„ํ‹ฐ๋Š” ์ฝ”ํ‹€๋ฆฐ์˜ ๊ฐ€์žฅ ํฐ ์žฅ์  ์ค‘ ํ•˜๋‚˜

? : null์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ฒŒ ํ•จ
!! : null์ด ์•„๋‹˜์„ ๊ฐ•์ œ๋กœ ๋ณด์žฅ
?. :null์ด ์•„๋‹ ๋•Œ๋งŒ ์‹คํ–‰ํ•จ. null์ผ ๋•Œ๋Š” null ๋ฌธ์ž๊ฐ€ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ
?: : null์ผ ๋•Œ ๋‹ค๋ฅธ ๋ฌธ์ž์—ด๋กœ ๋Œ€์ฒดํ•ด์„œ ์ถœ๋ ฅ

-๋ฐฐ์—ด

์ผ๋ฐ˜์ ์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ–ˆ์„ ๋•Œ ์ฝ”ํ‹€๋ฆฐ์€ ๋ฉ”๋ชจ๋ฆฌ์— ๋„์—„๋„์—„ ์ƒ์„ฑํ•จ
๋ฐฐ์—ด์„ ํ†ตํ•ด ๋ณ€์ˆ˜์— ์ˆœ์„œ๋ฅผ ๋งค๊ฒจ ์—ฐ์†์ ์œผ๋กœ ํ™œ์šฉ ๊ฐ€๋Šฅ
์ฝ”ํ‹€๋ฆฐ์€ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด arrayOf ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉ

-์ปฌ๋ ‰์…˜ (list, map, set)

๊ฐœ๋ฐœ์— ์œ ์šฉํ•œ ์ž๋ฃŒ๊ตฌ์กฐ
์ฝ”ํ‹€๋ฆฐ์—์„œ๋Š” ๋ฆฌ์ŠคํŠธ, ๋งต, ์ง‘ํ•ฉ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ง€์›ํ•จ

list

๋ฆฌ์ŠคํŠธ๋Š” ์ฝ๊ธฐ ์ „์šฉ / ์ˆ˜์ • ๊ฐ€๋Šฅํ•œ ์ข…๋ฅ˜๋กœ ๊ตฌ๋ถ„
๋ฐฐ์—ด๊ณผ ๋‹ฌ๋ฆฌ ํฌ๊ธฐ๊ฐ€ ์ •ํ•ด์ ธ ์žˆ์ง€ ์•Š์•„ ๋™์ ์œผ๋กœ ๊ฐ’์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฝ๊ธฐ ์ „์šฉ : listOf()
์ˆ˜์ • ๊ฐ€๋Šฅ : mutableListOf(), ArrayList<์ž๋ฃŒํ˜•>()
์šฐ๋ฆฌ๋Š” ์‹ค์ œ๋กœ ArrayList๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ๊ฒƒ

map

ํ‚ค์™€ ๊ฐ’์˜ ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ์ž๋ฃŒํ˜•
์ฝ๊ธฐ ์ „์šฉ : mapOf()
์ˆ˜์ • ๊ฐ€๋Šฅ : mutableMapOf()

set

์ˆœ์„œ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๊ณ  ์ค‘๋ณต์—†์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ง‘ํ•ฉ ์ž๋ฃŒํ˜•
๋‹ค๋ฅธ ์ปฌ๋ ‰์…˜๋“ค์€ ์š”์†Œ๋ฅผ ์ฐพ๋Š”๋ฐ์— ์ง‘์ค‘ํ•˜์ง€๋งŒ set์€ ์š”์†Œ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€์— ์ง‘์ค‘

์ฝ๊ธฐ ์ „์šฉ : setOf()
์ˆ˜์ • ๊ฐ€๋Šฅ : mutableSetOf()

์ง‘ํ•ฉ์˜ ํฌ๊ธฐ : ์ง‘ํ•ฉ๋ณ€์ˆ˜.size

์ธ๋ฑ์Šค ์ •๋ณด๋ฅผ ์ด์šฉํ•œ ํƒ์ƒ‰์ด ์•„๋‹ˆ๋ผ ์กด์žฌํ•˜๋Š”์ง€์˜ ์—ฌ๋ถ€๋งŒ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด contains๋ฅผ ์‚ฌ์šฉ

ํ•ฉ์ง‘ํ•ฉ : union
๊ต์ง‘ํ•ฉ : intersect
์ฐจ์ง‘ํ•ฉ : subtract

-Single-expression function

๋žŒ๋‹ค์‹ : ํ•˜๋‚˜์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•
๋ฉ”์†Œ๋“œ๋ฅผ ์„ ์–ธํ•˜์ง€ ์•Š๊ณ  ๋กœ์ง์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค

//๋ฉ”์†Œ๋“œ๋ฅผ ์„ ์–ธํ•˜์ง€ ์•Š๊ณ  ๋กœ์ง์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์–ด์š”

var add = {num1: Int, num2: Int, num3: Int -> (num1+num2+num3) / 3}
println("ํ‰๊ท ๊ฐ’์€ ${add(10,20,30)}์ž…๋‹ˆ๋‹ค")
profile
์ž์œ ๋กญ๊ฒŒ ์“ด ๋‚˜์˜ ์ž์œ ๋กœ์šด Development voyageโ›ต

0๊ฐœ์˜ ๋Œ“๊ธ€