반응형
코틀린에는 자바엔 없는 DataClass라는 것이 있다.
여태 자바처럼 짜는 것에 익숙해져서 공부 안하고 있다가 깊은 복사와 해체 기능을 손쉽게 사용할 수 있다는 점을 알고 정리를 해놓으려고 한다.
말이 필요없다 코드 ㄱㄱ
1. 해체
fun main(args: Array<String>)
{
val arrData = mutableListOf<Data>()
var vo = Data()
vo.indx = 1
vo.name = "김비서"
arrData.add(vo)
vo = Data()
vo.indx = 2
vo.name = "박비서"
arrData.add(vo)
arrData.forEachIndexed { _, data ->
val (indx, name) = data
println("$indx , $name")
}
}
data class Data(var indx : Int = 0, var name : String = "")
// 결과
1 , 김비서
2 , 박비서
데이터 객체의 멤버들을 손쉽게 새로운 변수에 세팅할 수 있다는점!
데이터 클래스가 아니라면 data.indx, data.name 이런식으로 변수이름을 매번 써줘야하는 귀찮음이 따랐을 것이다.
2. 깊은 복사
val vo = Data()
vo.indx = 1
vo.name = "김비서"
val vo2 = vo.copy()
vo2.indx = 50
vo2.name = "박비서"
val vo3 = Data()
vo3.indx = 100
vo3.name = "이비서"
val vo4 = vo3
vo4.indx = 1000
vo4.name = "한비서"
println("1. ${vo.indx} , ${vo.name}")
println("2. ${vo2.indx} , ${vo2.name}")
println("3. ${vo3.indx} , ${vo3.name}")
println("4. ${vo4.indx} , ${vo4.name}")
//결과
1. 1 , 김비서
2. 50 , 박비서
3. 1000 , 한비서
4. 1000 , 한비서
copy 함수를 통해 깊은 복사가 가능하다는 것을 알 수 있다.
반응형
'Language > Kotlin' 카테고리의 다른 글
코루틴 (0) | 2021.05.24 |
---|---|
코틀린 split 신기함 (0) | 2019.11.20 |
코틀린 리스트 (MutableList, List) (0) | 2019.11.20 |
코틀린 표준함수(apply, let, run, with, also, takeIf) (0) | 2019.11.20 |
코틀린 Null (안전 호출 연산자, non-null 단언 연산자) (0) | 2019.11.14 |