📜  Kotlin 中的解构声明

📅  最后修改于: 2022-05-13 01:55:09.691000             🧑  作者: Mango

Kotlin 中的解构声明

Kotlin 以解构声明的形式为程序员提供了一种处理类实例的独特方式。解构声明是一次创建和初始化多个变量的声明。
例如 :

val (emp_id,salary) = employee

这些多个变量对应于与实例关联的类的属性。这些变量可以以任何您想要的方式独立使用。

println(emp_id+" "+salary)

破坏声明适用于component()函数的概念。析构声明可以定义的变量数量,该类提供这些数量的组件函数,从 component1()、component2() 到 componentN()。 Kotlin 中的数据类默认实现组件功能。

解构声明编译为以下代码:-

val emp_id = employee.component1()
val salary = employee.component2()

从函数返回两个值的 Kotlin 程序 -

// A sample data class
data class Data(val name:String,val age:Int)
   
// A function returning two values
fun sendData():Data{
    return Data("Jack",30)
}
   
fun main(){
    val obj = sendData()
    //  Using instance to access properties
    println("Name is ${obj.name}")
    println("Age is ${obj.age}")
   
    // Creating two variables using  destructing declaration
    val (name,age) = sendData()
    println("Name is $name")
    println("Age is $age")
   
}

输出:

注意:如果要在解构声明中使用,组件函数定义必须以运算符关键字开头。

未使用变量的下划线
有时,您可能希望忽略解构声明中的变量。为此,请在其名称处添加下划线。在这种情况下,不会调用给定变量的组件函数。

lambda 中的解构声明 –

随着Kotlin 1.1的到来,析构声明语法也可以用于lambda 参数。如果 lambda 参数具有Pair类型的参数或声明组件函数的其他类型的参数,那么我们可以通过将它们放在括号中来引入新参数。规则与上面定义的相同。

对 lambda 参数使用解构声明的 Kotlin 程序 –

fun main(){
    val map = mutableMapOf()
    map.put(1,"Ishita")
    map.put(2,"Kamal")
    map.put(3,"Kanika")
    map.put(4,"Minal")
    map.put(5,"Neha")
    map.put(6,"Pratyush")
    map.put(7,"Shagun")
    map.put(8,"Shashank")
    map.put(9,"Uday")
    map.put(10,"Vandit")
    println("Initial map is")
    println(map)
    // Destructuring a map entry into key and values
    val newmap = map.mapValues { (key,value) -> "Hello ${value}" }
    println("Map after appending Hello")
    println(newmap)
}

输出:

如果解构参数的某个组件没有被使用,我们可以用下划线替换它,以避免调用组件函数:

map.mapValues { (_,value) -> "${value}" }