일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- c#
- GIT
- Tkinter
- django
- Kotlin
- Mac
- Excel
- SQL
- Redshift
- Apache
- gas
- list
- math
- Google Spreadsheet
- array
- hive
- 파이썬
- string
- Github
- Python
- dataframe
- google apps script
- PostgreSQL
- numpy
- matplotlib
- PySpark
- Java
- Google Excel
- PANDAS
- Today
- Total
달나라 노트
Kotlin - data class (data 저장에 유용한 class) 본문
Original source = play.kotlinlang.org/byExample/01_introduction/01_Hello%20world
data class는 특히 값들을 저장할 때 유용한 기능을 제공하는 class입니다.
한번 예시를 보시죠.
data class User(val name: String, val id: Int)
val user = User("Bella", 1)
val user2 = User("Bella", 1)
val user3 = User("Irene", 3)
fun main() {
println(user) // 1
println(user == user2) // 2
println(user == user3) // 3
val copied_user = user.copy() // 4
println(copied_user) // 5
println(copied_user.name) // 5
println(copied_user.id) // 5
println(user.copy("copied_user")) // 6
println(user.copy(id = 10)) // 7
println(user.name) // 8
println(user.component1()) // 8
println(user.id) // 8
println(user.component2()) // 8
}
-- Result
User(name=Bella, id=1)
true
false
User(name=Bella, id=1)
Bella
1
User(name=copied_user, id=1)
User(name=Bella, id=10)
Bella
1
0. User class를 생성하고 user, user2, user3 객체를 생성하였습니다.
user, user2는 동일한 parameter를 가진 채로 생성되었습니다.
1. user 객체를 출력합니다.
2. user객체와 user2 객체는 동일하다고 0번에서 설명했습니다. 따라서 true를 반환합니다.
근데 만약 User class를 data class가 아닌 일반 class로 설정했다면 이 결과는 false 입니다. data class의 특징 중 하나죠.
3. user, user3 객체는 서로 값이 다르므로 false를 반환합니다.
4. data class는 copy라는 함수를 제공합니다.
copy 함수는 객체를 똑같이 복사하여 return합니다.
5. 복사된 객체의 내용을 보면 원본 객체인 user 객체와 완전히 동일함을 알 수 있습니다.
6. copy 함수를 사용할 때 특정 parameter의 값을 바꿀 수 있습니다.
이 경우 user 객체의 첫 번째 parameter인 name parameter의 값을 copied_user로 바꾼 후 객체를 복사합니다.
7. 이 경우는 user 객체의 id parameter의 값을 10으로 바꾼 채로 복사합니다.
8. data class로 만들어진 객체의 attribute에 접근하는 별도의 방법은 다음 2가지가 있습니다.
i -> 객체의 attribute key 이용
ii -> component1, component2, ...이용(component1 = 첫 번째 atrribute value, component2 = 두 번째 attribute value, ...)
(6번, 7번에서 parameter의 값을 바꾼 채로 객체 복사를 했으나 원본 객체에는 변함이 없습니다.)
'Kotlin' 카테고리의 다른 글
Kotlin - apply (객체의 attribute 변경하기) (0) | 2021.03.16 |
---|---|
Kotlin - lambda function (한줄로 함수쓰고 initialize 하기) (0) | 2021.03.16 |
Kotlin - minOrNull, maxOrNull (0) | 2021.03.16 |
Kotlin - partition (0) | 2021.03.16 |
Kotlin - sorted, sortedDescending, sortedWith (0) | 2021.03.16 |