如何将值映射到Kotlin中的_id?

如何将值映射到Kotlin中的_id?,kotlin,Kotlin,代码1是网页中的示例代码。为了简化问题,我将代码设为2 在代码2中,代码片段var\u-id:Long by-map让我感到困惑,val-map是MutableMap,_-id是Long,为什么映射可以给_-id赋值 代码1 class CityForecast(val map: MutableMap<String, Any?>, val dailyForecast: List<DayForecast>) { var _id: Long by map va

代码1是网页中的示例代码。为了简化问题,我将代码设为2

在代码2中,代码片段var\u-id:Long by-map让我感到困惑,val-map是MutableMap,_-id是Long,为什么映射可以给_-id赋值

代码1

class CityForecast(val map: MutableMap<String, Any?>, val dailyForecast: List<DayForecast>) {
    var _id: Long by map
    var city: String by map
    var country: String by map

    constructor(id: Long, city: String, country: String, dailyForecast: List<DayForecast>)
            : this(HashMap(), dailyForecast) {
        this._id = id
        this.city = city
        this.country = country
    }
}
class CityForecast(val地图:可变地图,val每日预测:列表){
var\u id:Long by map
var城市:按地图排列
var国家/地区:按地图字符串
构造函数(id:Long,城市:String,国家:String,dailyForecast:List)
:此(HashMap(),dailyForecast){
这个.\u id=id
这个城市
这个国家
}
}
代码2

class CityForecast(val map: MutableMap<String, Any?>, val dailyForecast: List<DayForecast>) {
    var _id: Long by map
    var city: String by map
    var country: String by map   
}
class CityForecast(val地图:可变地图,val每日预测:列表){
var\u id:Long by map
var城市:按地图排列
var国家/地区:按地图字符串
}
对于Grzegorz Piwowarek,代码3正确吗

代码3

val map: MutableMap<String, Any?>
var _id: Long by map
map=hashMapOf("_id" to 123)  
println(_id) 
val映射:可变映射
var\u id:Long by map
map=hashMapOf(“\u id”到123)
println(_id)

因为它是语言功能之一—委托属性

默认情况下,Kotlin并不真正公开类字段,但属性通常由字段支持,但可以支持。。。还有一张地图

val id = CityForecast(hashMapOf("_id" to 123), emptyList())._id
println(id) // 123
但如果您尝试跑步:

CityForecast(hashMapOf("_id" to 123), emptyList()).city
您将获得:

java.util.NoSuchElementException: Key city is missing in the map.

因为它是一种语言特性——委托属性

默认情况下,Kotlin并不真正公开类字段,但属性通常由字段支持,但可以支持。。。还有一张地图

val id = CityForecast(hashMapOf("_id" to 123), emptyList())._id
println(id) // 123
但如果您尝试跑步:

CityForecast(hashMapOf("_id" to 123), emptyList()).city
您将获得:

java.util.NoSuchElementException: Key city is missing in the map.

谢谢在我将val hashMapOf(“\u id”传递到123)之后,“var\u id:Long by map”会从map中获取值吗?@HelloCW是的,准确地说-试着运行我的示例这是否意味着代码片段var\u id:Long=hashMapOf(“\u id”传递到123)OK?@HelloCW好吧,不。这里您只是在尝试将一个map分配给long@HelloCW不在这种情况下,您需要当场初始化地图谢谢!在我将val hashMapOf(“\u id”传递到123)之后,“var\u id:Long by map”会从map中获取值吗?@HelloCW是的,准确地说-试着运行我的示例这是否意味着代码片段var\u id:Long=hashMapOf(“\u id”传递到123)OK?@HelloCW好吧,不。这里您只是在尝试将一个map分配给long@HelloCW不,在这种情况下,您需要当场初始化地图