Destructing

Learn how to use position-based destructuring in Kotlin to assign multiple variables to components of a single object and explore its advantages and pitfalls.

Exploring position-based destructuring

Kotlin supports a feature called position-based destructuring, which lets us assign multiple variables to components of a single object. For that, we place our variable names in parentheses.

Press + to interact
data class Player(
val id: Int,
val name: String,
val points: Int
)
fun main() {
val player = Player(0, "Gecko", 9999)
val (id, name, pts) = player
println(id) // 0
println(name) // Gecko
println(pts) // 9999
}

Destructuring mechanism

This mechanism relies on position, not names. The object on the right side of the equality sign needs to provide the functions component1, component2, etc., and the variables are assigned to the results of these methods.

val (id, name, pts) = player
// is compiled to
val id: Int = player.component1()
val name: String = player.component2()
val pts: Int = player.component3()
The mechanism behind position-based destructuring

This code works ...