如何将值映射到Kotlin中的_id?
代码1是网页中的示例代码。为了简化问题,我将代码设为2 在代码2中,代码片段如何将值映射到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
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不,在这种情况下,您需要当场初始化地图