在Kotlin MutableMap和Map之间有什么不同?

我不明白在Kotlin MutableMap和Map之间有什么不同?

以下代码来自https://github.com/antoniolg/Kotlin-for-Android-Developers/blob/master/app/src/main/java/com/antonioleiva/weatherapp/data/db/DbClasses上的示例。 KT

我不知道为什么val map被设计成MutableMap,我认为它应该是Map,因为它是数据库表的字段。

你能告诉我为什么var map被设计成MutableMap吗?

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 } } 

Map是只读的。 MutableMap是可变的。 因为var可以写成一个新的值,所以它必须是一个可变的变量作为委托属性。 如果你只在val上使用委托属性,你可以使用Map来代替。