代码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