data 클래스는 자동으로 구조 분해 선언을 지원한다.
Destructuring/Computation.kt
package destructuring
import atomictest.eq
data class Computation(
val data: Int,
val info: String
)
fun evaluate(input: Int) =
if (input > 5)
Computation(input * 2, "High")
else
Computation(input * 2, "Low")
fun main() {
val (value, description) = evaluate(7)
value eq 14
description eq "High"
}
Pair<Int, String>을 반환하는 것보다 Computation을 반환하는 게 낫다. 결괏값의 타입에 좋은 이름을 붙이는 것은 함수에 자신의 역할을 잘 설명하는 이름을 붙이는 것만큼이나 중요한 일이다. 그리고 Computation 클래스에 정보를 추가하거나 제거하는 것이 Pair에 정보를 추가하거나 제거하는 것보다 훨씬 쉽다.