๋ณดํต ํด๋์ค
๋ ์์ฑ๊ณผ ๋์์ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ํ๋กํผํฐ
์ ๋ฉ์๋
๋ฅผ ๋ฉค๋ฒ๋ก ๊ฐ์ง๋ค. ๋จ์ฝ ํน์ ๋์์ ๊ฐ์ง์ง ์๊ณ ์ค๋ก์ง ๋ฐ์ดํฐ ์ ์ฅ์ ์ํด ์ฌ์ฉํ๋ค๋ฉด ์ผ๋ฐ์ ์ธ ํด๋์ค์์์ ๊ตฌํ ๋ถ๋ถ์ ํ์๊ฐ ์์ ๊ฒ์ด๋ค. ๊ตฌํ๋ถ๋ฅผ ์์ฑํ์ง ์์ผ๋ฉด ๊ทธ๋งํผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ ์ฌ์ฉํ๊ฒ ๋๊ณ ์์์ ๋ญ๋น๋ฅผ ๋ง์ ์ ์๊ฒ ๋ ๊ฒ์ด๋ค. ์ด์ฒ๋ผ ์ฝํ๋ฆฐ์์๋ ๋ฐ์ดํฐ ์ ์ฅ์ ์ํ ํด๋์ค๊ฐ ์๋๋ฐ ๋ฐ๋ก ๋ฐ์ดํฐ ํด๋์ค
์ด๋ค.
๋ฐ์ดํฐ ํด๋์ค
๋ณดํต ๋ฐ์ดํฐ ์ ๋ฌ์ ์ํ ๊ฐ์ฒด๋ฅผ DTO(Data Transfer Object)
๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๊ตฌํ ๋ก์ง์ ๊ฐ์ง๊ณ ์์ง ์๊ณ ์์ํ ๋ฐ์ดํฐ ๊ฐ์ฒด๋ฅผ ํํํ๊ธฐ ๋๋ฌธ์ ์์ฑ๊ณผ ์์ฑ์ ์ ๊ทผํ๊ณ ์ ํ๋ ๊ฒํฐ์ ์ธํฐ
๋ฅผ ๊ฐ์ง๋ค. ์ถ๊ฐ์ ์ผ๋ก toString(), equals()
๊ณผ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ํํํ๊ฑฐ๋ ๋น๊ตํ๋ ๋ฉ์๋๋ฅผ ๊ฐ์ ธ์ผ ํ๋ค. ์๋ฐ์์ ์ด๋ฅผ ๋ชจ๋ ์ ์ํ๋ ค๋ฉด ํด๋์ค์ ์ฝ๋๊ฐ ์์ฃผ ๊ธธ์ด์ง๋๋ฐ ์ฝํ๋ฆฐ์์๋ ๊ฐ๋ตํ๊ฒ ํํํ ์ ์๋ค.
๊ทธ๋ผ ์ฝํ๋ฆฐ์์๋ ์ด๋ป๊ฒ ํํํ๋์? ๐ค
์ฝํ๋ฆฐ์ DTO(Data Transfer Object)
๋ฅผ ์ํด ๋ฐ์ดํฐ ํด๋์ค๋ฅผ ์ ์ํ ๋ ์์์ ๋งํ ๊ฒํฐ์ ์ธํฐ, toString(), equals()
์ ๊ฐ์ ๋ฉ์๋๋ฅผ ์๋์ผ๋ก ์์ฑํด์ค๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ํ ํ๋กํผํฐ
๋ง ์์ฑํด์ฃผ๋ฉด ๋๋ค.
์ฝํ๋ฆฐ์์ ์๋์ ์ผ๋ก ์์ฑํด์ฃผ๋ ๋ฉ์๋๋ ์๋์ ๊ฐ๋ค.
- ํ๋กํผํฐ๋ฅผ ์ํ ๊ฒํฐ์ ์ธํฐ
- ๋น๊ต๋ฅผ ์ํ equals()์ ํค ์ฌ์ฉ์ ์ํ hashcode()
- ํ๋กํผํฐ๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํด์ฃผ๋ toString()
- ๊ฐ์ฒด ๋ณต์ฌ๋ฅผ ์ํ copy()
- ํ๋กํผํฐ์ ์์ํ๋ component1(), component2() ๋ฑ์ด ์๋ค.
๊ตณ์ด DTO๋ฅผ ์จ์ผํ๋์? ํด๋์ค ํ๋๊ฐ ์ถ๊ฐ๋๋ ๊ฑฐ๋๊น ์ข ๋ฒ๊ฑฐ๋ก์ธ ๊ฑฐ ๊ฐ์๋ฐ์? ๐ฎ
DTO
๋ ์ผ์ข
์ ํ์ค์ด๋ค. ํ๋ก๊ทธ๋จ์ ๊ฐ๋ฐํ๋ค๋ณด๋ฉด ๋ค์ํ ํด๋์ค๊ฐ ์๊ณ ์ด๋ฐ ํด๋์ค๋ค ์ฌ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ์ผ์ ๋น์ฐํ ๊ฒ์ด๋ค. ํ๋ก๊ทธ๋จ์ ์ข ๋ ๊ตฌ์กฐ์ ์ผ๋ก ๋ง๋ค๊ธฐ ์ํด์๋ ์ ์ด๋ฅผ ์ํ ์ปจํธ๋กค๋ฌ(Controller), ์ฌ์ฉ์์ ์ํธ์์ฉ์ ํ๋ ๋ทฐ(View), ๋ฐ์ดํฐ ํํ์ ์ํ ๋ชจ๋ธ(Model)๋ก ๊ตฌ์กฐํํ ์ ์๋๋ฐ, ์ด ๋ DTO๋ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ํ์ค ๋ฐฉ๋ฒ์ด ๋๋ค.
๋ฐ์ดํฐ ํด๋์ค ์ ์ธํ๊ธฐ
๋ฐ์ดํฐ ํด๋์ค๋ฅผ ์ ์ธํ๊ธฐ ์ํด์ data ํค์๋
๊ฐ ํ์ํ๋ค.
data class Customer(var name : String, var eamil : String)
๋ํ ์๋์ ์กฐ๊ฑด์ ๋ง์กฑํด์ผํ๋ค.
- ์ฃผ ์์ฑ์๋ ์ต์ํ ํ๋์ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ ธ์ผํ๋ค.
- ์ฃผ ์์ฑ์์ ๋ชจ๋ ๋งค๊ฐ๋ณ์๋ val, var๋ก ์ง์ ๋ ํ๋กํผํฐ์ฌ์ผ ํ๋ค.
- ๋ฐ์ดํฐ ํด๋์ค๋ abstract, open, sealed, inner ํค์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
data class Customer(var name : String, var email : String) {
var job : String = "Unknown"
constructor(name : String, email : String, _job : String) : this(name, email) {
job = _job
}
init {
// ๊ฐ์ฒด๊ฐ ์์ฑ๋ ๋ ์คํํ ๋ก์ง
}
}
ํ์ง๋ง ํ์์ ๋ฐ๋ผ ๋ถ์์ฑ์๋ init ๋ธ๋ก์ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. ๋ฐ์ดํฐ ํด๋์ค
๋ก ์ ์๋ Customer๋ ์ฃผ์์ฑ์๋ก name๊ณผ email์ ํ๋กํผํฐ๋ก ๊ฐ์ง๊ณ ์๊ณ , ๋ถ์์ฑ์๋ฅผ ํตํด job์ ์ด๊ธฐํ์ํค๊ณ ์๋ค. ์ฝ๋์์๋ ๋ณด์ด์ง ์์ง๋ง ์ฝํ๋ฆฐ์์ ์๋์ผ๋ก ์์ฑ๋๋ ๋ฉ์๋๊ฐ ์๋ค. ์์์ ๋งํ ๋ฉ์๋๋ค์ด๋ค. ๊ฐ ๋ฉ์๋๋ค์ ๋ํ ๊ธฐ๋ฅ์ ์๋์ ๊ฐ๋ค.
- equals() - ๋ ๊ฐ์ฒด์ ๋ด์ฉ์ด ๊ฐ์์ง ๋น๊ตํ๋ ์ฐ์ฐ์ (๊ณ ์ ๊ฐ์ด ๋ค๋ฅด์ง๋ง ์๋ฏธ๊ฐ์ด ๊ฐ์ ๊ฒฝ์ฐ)
- hashCode() - ๊ฐ์ฒด๋ฅผ ๊ตฌ๋ณํ๊ธฐ ์ํ ๊ณ ์ ํ ์ ์๊ฐ ์์ฑ, ๋ฐ์ดํฐ ์ธํธ๋ ํด์ ํ ์ด๋ธ์ ์ฌ์ฉํ๊ธฐ ์ํ ํ๋์ ์ธ๋ฑ์ค
- copy() - ํ๋กํผํฐ๋ง ๋ณ๊ฒฝํด์ ๊ฐ์ฒด ๋ณต์ฌ
- toString() - ๋ฌธ์์ด๋ก ๋ฐํ
- componentN() - ๊ฐ์ฒด์ ์ ์ธ๋ถ ๊ตฌ์กฐ๋ฅผ ๋ถํด
๊ฐ์ฒด ๋น๊ตํ๊ธฐ
๊ทธ๋ผ ํ๋ฒ ๋ฉ์๋๋ฅผ ์ฌ์ฉํด๋ณด์. equals
์ hashCode
๋ ๊ฐ์ฒด๋ฅผ ๋น๊ตํ๋ ๋ฉ์๋์ด๋ค.
val cus1 = Customer("kodo", "k906506@naver.com")
val cus2 = Customer("kodo", "k906506@naver.com")
println(cus1 == cus2)
println(cus1.equals(cus2))
println(cus1.hashcode())
println(cus2.hascode())
์ด๋ ํ ์คํ ๊ฒฐ๊ณผ๊ฐ ์ถ๋ ฅ๋ ๊น?
true
true
-1208413004, -1208413004
์์๊ณผ ๋ค๋ฅด๊ฒ true์ ๊ฐ์ ํด์ ๊ฐ์ด ๋ฐํ๋๋ค. ์๋ก ๋ค๋ฅธ ๊ฐ์ฒด๋๊น false์ ๋ค๋ฅธ ํด์ ๊ฐ์ด ์ถ๋ ฅ๋ ๊ฒ ๊ฐ์ง๋ง ๋ ๋ฉ์๋๋ ๊ฐ์ฒด์ ์ ๋ณด(?) ๋ฅผ ๋น๊ตํ๋ ๋ฉ์๋์ด๋ค. ๋ฐ๋ผ์ ๊ฐ์ฒด์ ๋ด๊ธด ์ ๋ณด, ์ฆ kodo
์ k906506@naver.com
์ด๋ผ๋ ๋ ๊ฐ์ ๋ฌธ์์ด์ด ๊ฐ์ผ๋ฏ๋ก true๋ฅผ ๋ฐํํ๋ ๊ฒ์ด๋ค.
๊ฐ์ฒด ๋ณต์ฌํ๊ธฐ
copy()
๋ ํ๋กํผํฐ๋ง ๋ณ๊ฒฝํด์ ๊ฐ์ฒด๋ฅผ ๋ณต์ฌํ๋ ๋ฉ์๋์ด๋ค.
val cus3 = cus1.copy(name = "dohyeon") // name์ ํด๋นํ๋ ํ๋กํผํฐ ๊ฐ๋ง ๋ณ๊ฒฝํด์ ๊ฐ์ฒด ๋ณต์ฌ
println(cus1.toString())
println(cus3.toString())
// ์๋๋ ์คํ ๊ฒฐ๊ณผ
Customer(name = kodo, email = k906506@naver.com)
Customer(name = dohyeon, email = k906506@naver.com)
๊ฐ์ฒด ๋์คํธ๋ญ์ฒ๋ง
๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ ํ๋กํผํฐ๋ฅผ ๊ฐ๋ณ ๋ณ์๋ก ๋ถํดํ ์ ์๋ค. ์๋ ์ฝ๋๋ฅผ ๋ณด์
val (name, email) = cus1
println("name = $name, email = $email)
val (_, email) = cus1
cus1 ๊ฐ์ฒด์ ํ๋กํผํฐ๋ฅผ ์ ์ธํ ๋ ๊ฐ์ ๋ณ์ name๊ณผ email๋ก ๊ฐ์ ธ์ฌ ์ ์๋ค. ํ๋์ ํ๋กํผํฐ๋ง ํ์ํ ๊ฒฝ์ฐ_(์ธ๋๋ฐ)
๋ฅผ ์ด์ฉํด์ ์ ์ธํ ์ ์๋ค.
์ด๋ฐ ์์ผ๋ก๋ ์ฌ์ฉํ ์ ์๋ค.
fun myFunc() : Customer {
return Customer("kodo", "k906506@naver.com")
}
val (name, email) = myFunc()
val myLamda = {
(name, email) : Customer ->
println(name)
println(email)
}
myLamda(cus1)
๊ฐ์ฒด๋ฅผ ์๊ดํธ๋ก ๊ฐ์ธ๋์์ผ๋ฏ๋ก ํ๋์ ๊ฐ์ฒด๋ก ๋๋ค์์ ์ ๋ฌํ๊ณ , ๋๋ค์์ ์๋ ๋ ๊ฐ์ ๋งค๊ฐ๋ณ์๊ฐ ํ๋กํผํฐ๋ฅผ ์ถ๋ ฅํ๊ฒ ๋๋ค. ๋ฐ์ดํฐ ํด๋์ค
๋ฅผ ์ด์ฉํ๋ฉด ๋ถ๊ฐ์ ์ธ ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ฉด์ ๋ฐ์ดํฐ์ ์ง์คํ ์ ์์ผ๋ฏ๋ก ์ ์ฉํ ํด๋์ค ๊ธฐ๋ฒ์ด๋ค.
๋ด๋ถ ํด๋์ค
์ฝํ๋ฆฐ
์ ๋ ๊ฐ์ง์ ๋ด๋ถ ํด๋์ค ๊ธฐ๋ฒ์ด ์๋ค. ํ๋๋ ์ค์ฒฉ ํด๋์ค
์ด๊ณ , ๋ค๋ฅธ ํ๋๋ ์ด๋ ํด๋์ค
์ด๋ค. ๋ ๊ฐ์ง ๋ชจ๋ ํน์ ํด๋์ค ๋ด๋ถ์ ์๋ ๊ฒ์ด ํน์ง์ด์ง๋ง ์ฌ์ฉ ๋ฐฉ๋ฒ์ด ์ฝ๊ฐ ๋ค๋ฅด๋ค. ์ด๋ฌํ ๋ด๋ถ ํด๋์ค๋ ๋
๋ฆฝ์ ์ธ ํด๋์ค๋ก ์ ์ํ๊ธฐ ๋ชจํธํ๊ฑฐ๋ ๋ค๋ฅธ ํด๋์ค์์ ์ ์ฌ์ฉํ์ง ์์ ์ธ๋ถ์์ ์ ๊ทผํ ํ์๊ฐ ์์ ๋ ์ฌ์ฉํ๋ฉด ์ข๋ค.
ํ์ง๋ง ๋๋ฌด ๋จ์ฉํ๋ฉด ํด๋์ค ๊ฐ์ ์์กด์ฑ์ด ์ปค์ง๊ณ ์ฝ๋๊ฐ ์ฝ๊ธฐ ์ด๋ ค์ฐ์ง๋ ์ฃผ์!
์ค์ฒฉ ํด๋์ค
์ฝํ๋ฆฐ
์์์ ์ค์ฒฉ ํด๋์ค
๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์ (static)
์ฒ๋ผ ๋ค๋ค์ง๋ค. ์ฆ, ๊ฐ์ฒด์ ์์ฑ ์์ด ์ ๊ทผํ ์ ์๋ค๋ ๊ฒ์ด๋ค. ์ธ๋ถ ํด๋์ค์์ ์ค์ฒฉ ํด๋์ค์ ํ๋กํผํฐ์๋ ์ ๊ทผํ ์ ์์ง๋ง ๋ฐ๋๋ก ์ค์ฒฉ ํด๋์ค์์ ์ธ๋ถ ํด๋์ค๋ก์ ์ ๊ทผ์ ๋ถ๊ฐ๋ฅํ๋ค๋ ํน์ง์ด ์๋ค.
class Outer {
val ov = 5
class Nested {// ์ค์ฒฉ ํด๋์ค์ ํ๋กํผํฐ
val nv = 10
fun greeting() = "Nested"
}
fun outside() {
val msg = Nested().greeting() // ์ธ๋ถ ํด๋์ค์์ ์ค์ฒฉ ํด๋์ค๋ก๋ ์ ๊ทผ ๊ฐ๋ฅ
println(Nested().nv)
}
}
fun main() {
val output = Outer.Nested().greeting() // ์ค์ฒฉ ํด๋์ค์ ํ๋กํผํฐ์ด๋ฏ๋ก ๊ฐ์ฒด ์์ฑ ์์ด ์ ๊ทผ ๊ฐ๋ฅ
println(output)
Outer.outside() // ์ค๋ฅ! ์ธ๋ถ ํด๋์ค๋ ๊ฐ์ฒด๋ฅผ ์์ฑํด์ผํจ
val outer = Outer()
println(outer.outside())
}
์ด ๊ทผ๋ฐ, ์ง๋๋ฒ์ ์ปดํจ๋์ธ ๊ฐ์ฒด๋ ๊ฐ์ฒด ์์ฑ ์์ด ์ ๊ทผํ ์ ์๋ค๊ณ ํ๋๋ฐ, ํน์ ์ปดํจ๋์ธ ๊ฐ์ฒด๋ ์ค์ฒฉ ํด๋์ค์์ ์ ๊ทผ์ด ์๋๋์? ๐ค
์ข์ ์ง๋ฌธ์ด๋ค. ์ค์ฒฉ ํด๋์ค์์ ์ธ๋ถ ํด๋์ค๋ก์ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ๋ค ํ๋๋ฐ ๋ง์ฝ ์ธ๋ถ ํด๋์ค์์์ ํ๋กํผํฐ๊ฐ ์ปดํจ๋์ธ ๊ฐ์ฒด์ ํ๋กํผํฐ์ธ ๊ฒฝ์ฐ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
class Outer {
class Nested {
fun accessOuterMethod() {
println(country)
getSomething()
}
}
companion object {
const val country = "Korea" // const๋ ์ปดํ์ผ ์๊ฐ ์์
fun getSomething() = println("Get Country")
}
์ด๋ ๊ฒ ์ปดํจ๋์ธ ๊ฐ์ฒด์ธ ๊ฒฝ์ฐ ์ค์ฒฉ ํด๋์ค์์๋ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค.
๊ทธ๋ผ, ์ค์ฒฉ ํด๋์ค์์ ์ธ๋ถ ํด๋์ค์ ์ ๊ทผํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ปดํจ๋์ธ ๊ฐ์ฒด ๋ฟ์ธ๊ฐ์? ๐
๋ด๋ถ ํด๋์ค๊ฐ ์ค์ฒฉ ํด๋์ค์ธ ๊ฒฝ์ฐ ๊ทธ๋ ๋ค. ํ์ง๋ง ์ค์ฒฉ ํด๋์ค๊ฐ ์๋ ์ด๋ ํด๋์ค๋ก ์ ์ธํ๋ฉด ์ธ๋ถ ํด๋์ค์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค!
์ด๋ ํด๋์ค
์ด๋ ํด๋์ค
๋ ๋ด๋ถ์ ์์ฑ๋ ์ค์ฒฉ ํด๋์ค
์๋ ์ข ๋ค๋ฅธ ์ญํ ์ ํ๋ค. ์์์ ๋งํ ๊ฒ์ฒ๋ผ ์ด๋ ํด๋์ค๋ ์ธ๋ถ ํด๋์ค์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค. private๋ก ์ ์ธํ ๊ฒฝ์ฐ์๋ ๋ง์ด๋ค.
class Smartphone(val model : String) {
private val cpu = "i5-8900"
inner class Inner { // ์ด๋ ํด๋์ค๋ ์ธ๋ถ ํด๋์ค์ ํ๋กํผํฐ์ ์ ๊ทผ ๊ฐ๋ฅ
println(cpu)
}
}
์ง์ญ ํด๋์ค
์ง์ญ ํด๋์ค
๋ ํน์ ๋ฉ์๋ ๋ธ๋ญ์ด๋ init ๋ธ๋ญ๊ณผ ๊ฐ์ด ๋ฒ์ ์ด๋ด์์๋ง ์ ํจํ ํด๋์ค์ด๋ค. ์ง์ญ ํด๋์ค ์ญ์ ์ด๋ ํด๋์ค์ฒ๋ผ ์ธ๋ถ ํด๋์ค์ ํ๋กํผํฐ์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค. ํ์ง๋ง ์ง์ญ ํด๋์ค์ ๊ฒฝ์ฐ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ฉด ์ฌ์ฉํ์ง ๋ชปํ๋ค๋ ํน์ง์ด ์๋ค.
์ค๋ ํด๋์ค์ Enum ํด๋์ค
์ค๋ ํด๋์ค
์ค๋ ํด๋์ค
๋ ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋์ ์๋ฃํ์ ๋ฌถ์ด์ ์ ๊ณตํ๋ ํด๋์ค์ด๋ค. Enum ํด๋์ค
์ ์ ์ฌํ๋ค. ์ค๋ ํด๋์ค๋ sealed
๋ผ๋ ํค์๋๋ฅผ ์ฌ์ฉํ๋ฉฐ ์ถ์ ํด๋์ค
์ ๊ฐ์ด ๋๋ฌธ์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ์ ์๋ค. ๋ํ ์์ฑ์๋ ๊ธฐ๋ณธ์ ์ผ๋ก private์ด๋ฉฐ private๊ฐ ์๋ ๋ค๋ฅธ ์์ฑ์๋ ํ์ฉํ์ง ์๋๋ค. ์ค๋ ํด๋์ค๋ ๊ฐ์ ํ์ผ ์์์๋ ์์์ด ๊ฐ๋ฅํ๋ ๋ค๋ฅธ ํ์ผ์์ ๋ถ๊ฐ๋ฅํ๋ค. ์ด ๋ open ํค์๋๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค. ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์๋์ ๊ฐ๋ค.
// ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ
sealed class Result {
open class Success(val message : String) : Result() // ์์์ ์ํด open์ผ๋ก ์ ์ธ, ์ฃผ์์ฑ์
class Error(val code : Int, val message : String) : Result()
}
class Status : Result()
class Inside : Result().Success("Status")
// ๋ ๋ฒ์งธ ๋ฐฉ๋ฒ
sealed class Result
open class Success(val message : String) : Result() // ์์์ ์ํด open์ผ๋ก ์ ์ธ
class Error(val code : Int, val message : String) : Result()
class Status : Result()
class Inside : Success("Status") // ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ๊ณผ ๋ค๋ฅด๊ฒ ์ (.)์ ์ฌ์ฉํ์ง ์๋๋ค.
// ์ฒซ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํ๊ณ
fun main() {
val result = Result.Success("Good") // Result ๊ฐ์ฒด
val msg = eval(result)
println(msg)
}
fun eval(result : Result) : String = when(result) {
is Status -> "in progress"
is Result.Success -> result.message
is Result.Error -> result.message
}
Enum ํด๋์ค
Enum ํด๋์ค
๋ ์ค๋ ํด๋์ค์ ๋์ผํ๋ค. ํ์ง๋ง ํ ๊ฐ์ง ์๋ฃํ๋ง ๋์ดํ ์ ์๋ค.
enum class DayOfWeek(val num : Int) { // ์ฃผ์์ฑ์
Monday(1), Tuesday(2), ... , Sunday(7)
}
val day = DayOfWeek.Saturday
when(day.num) {
1, 2, 3, 4, 5 -> println("WeekDay")
6, 7 -> println("Weekend")
}
์ด๋ ธํ ์ด์ ํด๋์ค
์ด๋
ธํ
์ด์
ํด๋์ค
๋ ์กฐ๊ธ ๋์ด๋๊ฐ ์์ผ๋ ๋์ค์ ๋ฐ๋ก ์์ฑํด์ผ๊ฒ ๋ค. ๐คฃ
'๐ป ๊ฐ๋ฐ > Kotlin' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ฝํ๋ฆฐ ์์ ์ ๋ณต] ๊ณต๋ณ์ฑ, ๋ฐ๊ณต๋ณ์ฑ, ๋ฌด๋ณ์ฑ (0) | 2022.05.02 |
---|---|
[์ฝํ๋ฆฐ ์์ ์ ๋ณต] ์ ๋ค๋ฆญ (0) | 2022.04.25 |
[์ฝํ๋ฆฐ ์์ ์ ๋ณต] ์ถ์ ํด๋์ค์ ์ธํฐํ์ด์ค (2) | 2022.04.22 |