Kotlin 自定义 getter 和可变列表

Kotlin custom getter and mutable list

我是 Kotlin 的新手,目前我并不完全了解如何正确使用 getter 和 setter。我想写一个 class 产品。在这个 class 中是一个变量 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
        }
}

这里是股票 class:

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

您在每次计算中都覆盖了该值。您需要将其添加到总和中。 替换

value = item.quantity.toDouble() * basePrice

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

或者你可以通过更简单的方式获取

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