Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin中的嵌套属性委托_Kotlin_Kotlin Delegate - Fatal编程技术网

Kotlin中的嵌套属性委托

Kotlin中的嵌套属性委托,kotlin,kotlin-delegate,Kotlin,Kotlin Delegate,正如官方教程中提到的,我们可以将一个类分配给它: class User(val map: Map<String, Any?>) { val name: String by map val age: Int by map } 类用户(val-map:map){ val名称:映射字符串 val年龄:按地图整型 } 然而,有时我们会像另一个类一样将非平凡的结构存储在映射中(这在处理复杂的JSON时很常见)。为了更好地阐述我的想法,我提出了如下伪代码: class

正如官方教程中提到的,我们可以将一个类分配给它:

class User(val map: Map<String, Any?>) {
    val name: String by map
    val age: Int     by map
}
类用户(val-map:map){
val名称:映射字符串
val年龄:按地图整型
}
然而,有时我们会像另一个类一样将非平凡的结构存储在映射中(这在处理复杂的JSON时很常见)。为了更好地阐述我的想法,我提出了如下伪代码:

class User(val map: Map<String, Any?>) {
    val name: String by map
    val otherType: OtherType by map
}

class OtherType {}
类用户(val-map:map){
val名称:映射字符串
val otherType:otherType按映射
}
类OtherType{}

可以委托这种嵌套结构吗?

没问题,您可以这样做。它的工作原理是:

fun main(args: Array<String>) {
    val user = User(mapOf("name" to OtherType(1)))
    println(user)
}

data class User(val map: Map<String?, Any?>) {
    val name: String by map
    val otherType: OtherType by map
}

data class OtherType(val something:Int) {}
fun main(args:Array){
val user=user(将“名称”映射到其他类型(1)))
println(用户)
}
数据类用户(val映射:映射){
val名称:映射字符串
val otherType:otherType按映射
}
数据类OtherType(val:Int){}

您可以委派任何类型的任务。

为什么在询问之前不亲自测试?