TIL

아이템 37 데이터 집합 표현에 data 한정자를 사용하라

val player = Player(0, "Gecko", 9999)
val newObj = player.copy(name = "Thor")
print(newObj) // Player(id=0, name=Thor, points=9999)
val (id, name, pts) = player

// 컴파일하면 아래처럼 변환되는 것
val id: Int = player.component1()
val name: String = player.component2()
val pts: Int = player.component3()

튜플 대신 데이터 클래스 사용하기

// 값에 간단히 이름 붙일 때
val (description, color) = when {
	degrees < 5 -> "cold" to Color.BLUE
	degrees < 23 -> "mild" to Color.YELLOW
	else -> "hot" to Color.RED
}

// 표준 라이브러리에서 볼 수 있 듯 미리 알 수 없는 aggregate(집합)을 표현할 때
val (odd, even) = numbers.partition { it % 2 == 1 }
val map = mapOf(1 to "San Francisco", 2 to "Amsterdam")