В Kotlin деструктурирование выглядело так:
val (name, age) = person. Но компилятор берет значения не по именам, а по позиции component1/component2.Отсюда проблемы. Если поменяли порядок параметров в data class или сделали
age вычисляемым свойством: то та же строка начинает доставать другое поле. Причем иногда код даже скомпилируется, но, конечно, смысл изменится: val (age, name) = person.И вот теперь Kotlin экспериментально переводит круглые скобки на деструктурирование по имени. Синтаксис будет такой:
(val name, val age) = person. И порядок внутри скобок не важен. Переименование явно: (val years = age, val theName = name) = person.Позиционное же деструктурирование остается, но переезжает в квадратные скобки для Pair/Triple и коллекций:
val [x, y] = point.Сейчас этот функционал является экспериментальным, но есть планы в будущем переехать полностью на деструктурирование по имени.
📎 Полный текст: https://habr.com/ru/companies/spring_aio/articles/1035596/
