테크과학! DiMo
개발 환경: play.kotlinlang.org
Data class
데이터를 다루는 데에 최적화된 class로 5가지 기능을 내부적으로 자동으로 생생
equals()
내용의 동일성을 판단
hashcode()
객체의 내용에서 고유한 코드를 생성
toString()
포함된 속성을 보기 쉽게 나타냄
copy()
객체를 복사하여 똑같은 내용의 새 객체를 만듦. copy()를 통해 새 객체를 생성할 때는 똑같은 내용의 객체를 생성할 수
도 있지만 생성자와 똑같은 형태의 파라미터를 부여하여 일부 속성을 변경할 수 있다.
componentX()
속성을 순서대로 반환
fun main() {
val a = General("보영", 212)
println(a == General("보영", 212))
println(a.hashCode())
println(a)
val b = Data("루다", 306)
println(b == Data("루다", 306))
println(b.hashCode())
println(b)
println(b.copy())
println(b.copy("아린"))
println(b.copy(id = 618))
}
class General(val name: String, val id: Int)
data class Data(val name: String, val id: Int)
Output:
false
1510467688
General@5a07e868
true
46909878
Data(name=루다, id=306)
Data(name=루다, id=306)
Data(name=아린, id=306)
Data(name=루다, id=618)
일반 클래스로 만든 a는 equals()나 hashCode(), toString() 함수의 결과가 제대로 구현되지 않은 반면 data 클래스로 만
든 b는 3함수 모두 의미 있는 기능으로 자동 구현되어 있음을 알 수 있으며 copy() 함수를 통해 원본을 복사한 새 객체 역
시 쉽게 만들 수 있음을 알 수 있다.
fun main() {
val list = listOf(Data("보영", 212),
Data("루다", 306),
Data("아린", 618))
for ((a, b) in list) {
println("${a}, ${b}")
}
}
class General(val name: String, val id: Int)
data class Data(val name: String, val id: Int)
Output:
보영, 212
루다, 306
아린, 618
enum class
enumerated type 즉, '열거형'의 준말
enum 클래스 안의 객체들은 관행적으로 상수를 나타낼 때 사용하는 대문자로 기술한다.
또한 enum의 객체들은 고유한 속성을 가질 수 있다.
enum에 생성자를 만들어 속성을 받도록하면 객체를 선언할 때 속성도 설정할 수 있다. 또한 일반 클래스처럼 함수도 추
가할 수 있다. 이 때는 객체의 선언이 끝나는 위치에 세미콜론을 추가하고 함수를 기술하면 된다.
fun main() {
var state = State.SING
println(state)
state = State.SLEEP
println(state.isSleeping())
state = State.EAT
println(state.message)
}
enum class State(val message: String) {
SING("노래를 부른다"),
EAT("밥을 먹는다"),
SLEEP("잠을 잔다");
fun isSleeping() = this == State.SLEEP
}
Output:
SING
true
밥을 먹는다
'Kotlin > 기본 문법' 카테고리의 다른 글
코틀린 강좌 #26 컬렉션 함수, 첫번째 이야기! (0) | 2020.12.24 |
---|---|
코틀린 강좌 #25 컬렉션 2탄, Set과 Map (0) | 2020.12.24 |
코틀린 강좌 #23 중첩클래스와 내부클래스 (0) | 2020.12.24 |
코틀린 강좌 #22 함수의 argument를 다루는 방법과 infix 함수 (0) | 2020.12.24 |
코틀린 강좌 #21 null 값을 처리하는 방법? 동일한지를 확인하는 방법? (0) | 2020.12.24 |