首页 > 解决方案 > Kotlin 自定义 getter 和可变列表

问题描述

我是 Kotlin 的新手,目前我并不完全知道如何正确使用 getter 和 setter。我想写一个类产品。在这个类中有一个变量valueOfAllItems,它从 stockList 中获取数量并将其与 basePrice 相乘。

这是我目前的方法,我认为这是不正确的:

class Product(val basePrice: Double, val stockList: MutableList<Stock>) {
    val valueOfAllItems: Double = 0.0
        get() {
            var value = field
            for (item in stockList) {
                value = item.quantity.toDouble() * basePrice
            }
            return value
        }
}

这里是 Stock 类:

class Stock(val quantity: Int, val good: boolean)

请帮忙。

编辑:这是最终解决方案(感谢@AyTee 和@Tenfour04)

class Product(val basePrice: Double, val stockList: MutableList<Stock>) {
    val valueOfAllItems: Double
        get() {
           return stockList.map{it.quantity.toDouble() * basePrice}.sum()
        }
}

标签: kotlingetter

解决方案


您覆盖每个计算中的值。您需要将其添加到总和中。代替

value = item.quantity.toDouble() * basePrice

value += item.quantity.toDouble() * basePrice

或者你可以用更简单的方式得到它

val valueOfAllItems = stockList.map{ it.quantity.toDouble() * basePrice }.sum()

推荐阅读