enum class Color {
RED, GREEN, BLUE
}
enum class Color(val rgb: Int) {
RED(0xFF0000),
GREEN(0x00FF00),
BLUE(0x0000FF)
}
// when 사용
fun test(color: Color) {
when(color) {
Color.RED -> {
color.rgb
}
Color.GREEN -> {}
Color.BLUE -> {}
}
}
data class Person(
val name : String,
val age : Int
)
다음과 같이 생성해서 사용한다.
val person1 = Person("Twaun", 28)
val person2 = Person("Minsoo", 25)
다음은 data class에서 제공하는 유용한 함수에 대해서 알아보자. 사실 data class가 좋다고 하는 이유는 기본적으로 사용가능한 이 함수들 덕분이라고 할 수 있다.
data class 를 복사할 수 있다. 추가로 필드값을 변경해서 복사가 가능하다.
val person = Person("taewaun", 12)
val person2 = person.copy(age = 15)
'==' 연산자로 두 객체를 비교할 수 있다.
val person1 = Person("Twaun", 28)
val person2 = Person("Minsoo", 25)
println(person1==person2) // false
내부적으로 toString()이 구현되어 있어서 객체 자체를 출력해도 객체 프로퍼티 값들을 확인할 수 있다.
val person = Person("Twaun", 28)
println(person)
//Person(name=Twaun, age=28)
data class 각 컴포넌트를 별개로 분해가 가능하다.
val person = Person("Twaun", 28)
val (name, age) = person
println("$name, $age")
// Twaun, 28