Иногда легко деструктурировать объект на несколько переменных с разными свойствами вместо того, чтобы вызывать его снова и снова с помощью . оператор на свойстве или самом экземпляре. Это выгодно по нескольким причинам, например,

  1. Нам не нужно снова и снова использовать свойство точки объекта.
  2. Если объект имеет тип, допускающий значение null, мы можем выполнить проверку на значение null только один раз, а затем мы можем деструктурировать его до свойств, не допускающих значение null.
  3. Определенная переменная будет активна в пределах определенной области.
  4. Меньше шансов запутаться и больше удобочитаемости.
This post was originally posted at https://agrawalsuneet.github.io/blogs/destructuring-declarations-in-kotlin/ and reposted on Medium on 03rd Dec 2021.

Что такое декларация деструктуризации?

Давайте попробуем понять, что такое декларация деструктуризации и как она работает внутри.

Обычно, когда мы объявляем свойство, мы можем инициализировать его некоторым значением или пометить как обнуляемое. Если мы хотим извлечь свойство из объекта, нам нужно сделать это для каждого свойства отдельно.

Kotlin предоставляет функциональные возможности для этого в одном объявлении, где мы можем деструктурировать объект на несколько переменных в одном объявлении.

data class Employee (val name : String,
               val age: Int,
               val department: String)
var employee = Employee(name = "Suneet", age = 29, department = "Engineering")
    
var (name, age, department) = employee
    
println("$name at the age of $age is working in $department department")

Вывод для приведенного выше оператора печати будет

Suneet at the age of 29 is working in Engineering department

Как это работает внутри?

Компилятор внутренне использует функцию componentN Kotlin, чтобы деструктурировать объект и назначить его свойствам по отдельности.

componentN — это функциональность, предоставляемая Kotlin для любого класса данных, который возвращает N-е свойство (по порядку с самого начала) этого класса данных.

var (name, age, department) = employee
// is equivalent to
var name = employee.component1()
var age = employee.component2()
var department = employee.component3()

Пожалуйста, продолжайте читать на https://agrawalsuneet.github.io/blogs/destructuring-declarations-in-kotlin/

Это все на данный момент. Вы можете прочитать другие мои интересные блоги здесь или насладиться моими играми или приложениями, перечисленными здесь. Не стесняйтесь использовать мои компоненты Android с открытым исходным кодом в своем приложении, указанном здесь. Или напишите электронное письмо, если вы не нашли то, что ищете, и вам нужна помощь.