๊ฐ์ฒด๋ฅผ ์ด์ฉํด ๋ณ์, ๋ฉ์๋์ ํธ์ถ ์ฌ๋ถ๋ฅผ ์ ๊ทผํจ
default๋ public
ํ๋ก์ ํธ -๋ชจ๋,ํจํค์ง,ํด๋์ค
๋ชจ๋ -ํจํค์ง,ํด๋์ค
ํจํค์ง -ํด๋์ค
private : ๋์ผํ ํด๋์ค ๋ด๋ถ์์๋ง ์ ๊ทผํ ์ ์๋ค
ํ๋ก๊ทธ๋จ ์คํ ์ ์ ์ ์ ์๋ ์ปดํ์ผ ์๋ฌ : ์ค๋ฅ
ํ๋ก๊ทธ๋จ ์คํ ๋์ค ๋ฐ์ํ๋ ๋ฐํ์ ์๋ฌ : ์์ธ
์คํ๋์ค์ ๋ฐ์๋๋ ์์ธ๋ฅผ ์ฒ๋ฆฌํด์ผ ํจ
์คํํ๋ ๋์ค์ ์์ธ๋์ ๊บผ์ง ๊ฑฐ ๊ฐ์๋ฐ?
->try๋ก ๊ฐ์ธ๊ณ ์์ธ๋ฅผ ๋ฐ์ํ์ ๋ ์คํํ ์ฝ๋๋ฅผ catch๋ก ๊ฐ์
์์ธ๊ฐ ๋ฐ์ํ์ ๋ ์ฒ๋ฆฌ๋ฅผ ํ๋ ๊ฑด ์๋๊ณ ์ข
๋ฃ๊ฐ ๋์ง ์๊ฒ ์์ธ๊ฐ ๋ฐ์ํ๋ค๊ณ ์์ ์ ์ผ๋ก ๋์ง๋ ์ญํ
->์์ธ๊ฐ ๋ฐ์ํ์ ๋ ๋ก๊ทธ๋ฅผ ๋จ๊ธฐ๊ฑฐ๋ ๊ธฐ๋ก์ ํ๊ณ ์ถ์ผ๋ฉด try-catch๋ฌธ์ ์จ์ผ ํจ
: ์ฌ์ฉํ๋ค๊ฐ ๋์ค์ ์ข ๋ฃ๋๋ ๊ฑด ์ฌ๊ฐํ ๋ฌธ์ ์
: finally์ ์์ฑํ๋ ์ฝ๋๋ ์์ธ ์ฒ๋ฆฌ์ ๊ด๊ณ์์ด ํญ์ ์คํ๋จ
ํด๋์ค๋ฅผ ์ค๊ณํ ๋ ์ด๊ธฐ์ ๊ฐ์ ์ ์ํ๊ธฐ ๋์ฒํด์ ๋์ค์ ๋์
ํ๊ธฐ ์ํ ๋ฌธ๋ฒ
์ฝํ๋ฆฐ์ ์์ ์ฑ์ ์ํด ๋ฐ๋์ ๋ณ์์ ๊ฐ์ ์ด๊ธฐํํ ๊ฒ์ ๊ถ์ฅํจ
๋ณ์๋ 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
๋ฉ์๋๋ฅผ ์ฌ์ฉ
๊ฐ๋ฐ์ ์ ์ฉํ ์๋ฃ๊ตฌ์กฐ
์ฝํ๋ฆฐ์์๋ ๋ฆฌ์คํธ, ๋งต, ์งํฉ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ง์ํจ
๋ฆฌ์คํธ๋ ์ฝ๊ธฐ ์ ์ฉ / ์์ ๊ฐ๋ฅํ ์ข
๋ฅ๋ก ๊ตฌ๋ถ
๋ฐฐ์ด๊ณผ ๋ฌ๋ฆฌ ํฌ๊ธฐ๊ฐ ์ ํด์ ธ ์์ง ์์ ๋์ ์ผ๋ก ๊ฐ์ ์ถ๊ฐํ ์ ์๋ค.
์ฝ๊ธฐ ์ ์ฉ : listOf()
์์ ๊ฐ๋ฅ : mutableListOf(), ArrayList<์๋ฃํ>()
์ฐ๋ฆฌ๋ ์ค์ ๋ก ArrayList๋ฅผ ๋ง์ด ์ฌ์ฉํ๊ฒ ๋ ๊ฒ
ํค์ ๊ฐ์ ์์ผ๋ก ์ด๋ฃจ์ด์ง ์๋ฃํ
์ฝ๊ธฐ ์ ์ฉ : mapOf()
์์ ๊ฐ๋ฅ : mutableMapOf()
์์๊ฐ ์กด์ฌํ์ง ์๊ณ ์ค๋ณต์์ด ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ๋ ์งํฉ ์๋ฃํ
๋ค๋ฅธ ์ปฌ๋ ์
๋ค์ ์์๋ฅผ ์ฐพ๋๋ฐ์ ์ง์คํ์ง๋ง set์ ์์๊ฐ ์กด์ฌ
ํ๋์ง์ ์ง์ค
์ฝ๊ธฐ ์ ์ฉ : setOf()
์์ ๊ฐ๋ฅ : mutableSetOf()
์งํฉ์ ํฌ๊ธฐ : ์งํฉ๋ณ์.size
์ธ๋ฑ์ค ์ ๋ณด๋ฅผ ์ด์ฉํ ํ์์ด ์๋๋ผ ์กด์ฌํ๋์ง์ ์ฌ๋ถ๋ง ์๊ณ ์ถ๋ค๋ฉด contains๋ฅผ ์ฌ์ฉ
ํฉ์งํฉ : union
๊ต์งํฉ : intersect
์ฐจ์งํฉ : subtract
๋๋ค์ : ํ๋์ ๋ฉ์๋๋ฅผ ๊ฐ๊ฒฐํ๊ฒ ํํํ ์ ์๋ ๋ฐฉ๋ฒ
๋ฉ์๋๋ฅผ ์ ์ธํ์ง ์๊ณ ๋ก์ง์ ์ ์ฅํ ์ ์๋ค
//๋ฉ์๋๋ฅผ ์ ์ธํ์ง ์๊ณ ๋ก์ง์ ์ ์ฅํ ์ ์์ด์
var add = {num1: Int, num2: Int, num3: Int -> (num1+num2+num3) / 3}
println("ํ๊ท ๊ฐ์ ${add(10,20,30)}์
๋๋ค")