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")
}
输出:
Name is Jack
Age is 30
Name is Jack
Age is 30
注意:如果要在解构声明中使用,组件函数定义必须以运算符关键字开头。
未使用变量的下划线
有时,您可能希望忽略解构声明中的变量。为此,请在其名称处添加下划线。在这种情况下,不会调用给定变量的组件函数。
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)
}
输出:
Initial map is
{1=Ishita, 2=Kamal, 3=Kanika, 4=Minal, 5=Neha, 6=Pratyush, 7=Shagun, 8=Shashank, 9=Uday, 10=Vandit}
Map after appending Hello
{1=Hello Ishita, 2=Hello Kamal, 3=Hello Kanika, 4=Hello Minal, 5=Hello Neha, 6=Hello Pratyush, 7=Hello Shagun, 8=Hello Shashank, 9=Hello Uday, 10=Hello Vandit}
如果解构参数的某个组件没有被使用,我们可以用下划线替换它,以避免调用组件函数:
map.mapValues { (_,value) -> "${value}" }
在评论中写代码?请使用 ide.geeksforgeeks.org,生成链接并在此处分享链接。