TGViewer
Kotlin Kotlin @kotlin_lib · 2.05K subscribers
Post #705 804
🧩 Kotlin учится деструктурировать не по позиции, а по имени

В Kotlin 2.3.20 появилась экспериментальная фича name-based destructuring.

Раньше деструктуризация работала через componentN() и зависела от порядка полей:


data class User(
val firstName: String,
val lastName: String
)

val user = User("Alice", "Husseini")

val (lastName, firstName) = user


И всё: переменные названы красиво, но значения уже перепутаны.

Теперь Kotlin предлагает другой подход - связывать переменные с property по имени, а не по позиции:


(val firstName = firstName, val lastName = lastName) = user


Это делает код безопаснее, особенно когда:

— в data class много полей
— порядок полей меняется
— деструктуризация используется в лямбдах, маппингах и UI-моделях
— имя переменной важнее позиции

Фича пока экспериментальная и включается через compiler option:


freeCompilerArgs.add("-Xname-based-destructuring=only-syntax")


Есть несколько режимов:

only-syntax - включает явный синтаксис без изменения старого поведения
name-mismatch - предупреждает, если имена не совпадают с полями
complete - делает деструктуризацию в круглых скобках name-based, а позиционную переносит в квадратные скобки:


val [firstName, lastName] = user


Похоже, Kotlin постепенно уходит от магии component1, component2 к более читаемой и безопасной деструктуризации.

Для Android-разработки это особенно приятно: меньше шансов тихо перепутать title, subtitle, id, state или другие поля в UI-моделях.

https://proandroiddev.com/beyond-positions-kotlins-new-name-based-destructuring-eee347d1bb5c

Экспериментальная фича, но направление очень здравое.

✍️ @kotlin_lib
  • 👍 3
More from @kotlin_lib
  1. Aug 26, 2026🚧 Ваш Mutex тормозит корутины. Как перестать лочить и начать жить Вы пишете многопоточный…
  2. Jul 25, 2026🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.r…
  3. Jul 1, 2026🌪 Ваша дата в опасности: flatMapConcat vs Merge vs Latest Вам нужно взять поток ID-шников…
  4. Jun 24, 2026🤖 Android-приложение — это не только красивый экран. За ним стоят работа с внешним API, з…
  5. Jun 23, 2026🔮 Убийца бойлерплейта: Встречайте Context Parameters (Kotlin 2.x) Мы так привыкли к Depen…
  6. Jun 3, 2026Яндекс обновил Yandex Mobile Ads SDK для монетизации мобильных приложений — и это интересн…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →