石家庄做手机网站推广,用wordpress二级菜单导航,网站定制化什么意思,阿里云建站可不可以备案在一些像 Python 的高级语言中#xff0c;支持 多返回值的#xff0c;例如 x, y get_position() 这样操作接收。 而在 Kotlin 中#xff0c;虽然不支持 多返回值#xff0c;但有类似的 解构#xff08;destructure#xff09; 对象功能#xff0c;叫做 解构声明。
用…在一些像 Python 的高级语言中支持 多返回值的例如 x, y get_position() 这样操作接收。 而在 Kotlin 中虽然不支持 多返回值但有类似的 解构destructure 对象功能叫做 解构声明。
用 (变量1, 变量2, ...) obj 形式一次性创建赋值 多个变量。
举例说明
data class Person(val name: String, val age: Int)// Person 对象 可以 解构为 几个变量
val (name, age) person说明
解构对象的原理是只要 实现了 component1() component2() … componentN() 函数就可按顺序 返回 解构的属性值。
而 上面代码实际是 编译成 了
name person.component1()
age person.component2()data class 会自动实现 compoenntN() 方法。
componentN() 函数 可手动实现 componentN() 函数必须用 operator 关键字标记函数 举例实现 解构函数
operator fun component1(): String {return this.name
}解构使用
1. 可使用标准的 Pair、Triple 返回 两、三个值
2. 未使用的变量可用 _ 标记
val (_, status) getResult()说明对于 _ 未使用的变量 componentN() 函数将不会调用直接跳过。
2. map 的 迭代 解构
for ((key, value) in map) {// do something with the key and the value
}说明
Kotlin 实现了 Entry 的拓展函数 component1() component2() 支持解构。
4. List 和 Array 解构
Kotlin 列表和数组也支持解构
fun getList() listOf(1, 2, 3, 4)val (a, b, c, d) getList()注意数组和列表默认解构最多支持前5个元素
文档
Destructuring declarations