Kotlin的Code 1和Code 2有什么不同?

时间:2017-09-30 01:31:14

标签: kotlin

代码1来自示例项目,我修改了一些代码并将其更改为代码2,代码2也可以正确运行。

Kotlin的Code 1和Code 2有什么不同?谢谢!

代码1

imgName: function(fruit){
  if (fruit === 'apple') {
    return 'https://bestapples.com/wp-content/uploads/2015/10/apple-varieties.jpg'
  } else {
    var imgPath = 'assets/images/' + fruit + '.jpg';
    return imgPath;        
  }

}

代码2

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

1 个答案:

答案 0 :(得分:3)

第一个将在构造时评估dailyForecast.size,将值存储在支持字段中,并创建一个返回此支持字段值的访问者。

第二个不会创建支持字段,而是会创建一个访问者,每次获得dailyForecast.size时都会返回评估表达式size