더북(TheBook)

DataClasses/CopyDataClass.kt

package dataclasses
import atomictest.eq

data class DetailedContact(
  val name: String,
  val surname: String,
  val number: String,
  val address: String
)

fun main() {
  val contact = DetailedContact(
    "Miffy",
    "Miller",
    "1-234-567890",
    "1600 Amphitheatre Parkway")
  val newContact = contact.copy(
    number = "098-765-4321",
    address = "Brandschenkestrasse 110")
  newContact eq DetailedContact(
    "Miffy",
    "Miller",
    "098-765-4321",
    "Brandschenkestrasse 110")
}

copy()의 파라미터 이름은 생성자 파라미터의 이름과 같다. 모든 인자에는 각 프로퍼티의 현재 값이 디폴트 인자로 지정되어 있다. 따라서 변경하고 싶은 인자만 (이름 붙은 인자로) 지정하면 된다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.