代码1和代码2在Kotlin有什么不同?
代码1来自示例项目,我修改了一些代码并将其更改为代码2,代码2也可以正确运行。
代码1和代码2在Kotlin有什么不同? 谢谢!
代码1
data class ForecastList(val id: Long, val city: String, val country: String, val dailyForecast: List<Forecast>) { val size: Int get() = dailyForecast.size operator fun get(position: Int) = dailyForecast[position] }
代码2
data class ForecastList(val id: Long, val city: String, val country: String, val dailyForecast: List<Forecast>) { val size: Int = dailyForecast.size operator fun get(position: Int) = dailyForecast[position] }
第一个将在构建时评估dailyForecast.size
,将值存储在后台字段中,并创建一个返回dailyForecast.size
字段值的访问器。
第二个不会创建一个支持字段,而是会创建一个访问器,每次获得size
时返回评估表达式dailyForecast.size
。