Kotlin自定义的getter和mutable list。

问题描述 投票:0回答:1

我是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
        }
}

这里是库存类。

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()
        }
}
kotlin getter
1个回答
1
投票

你在每次计算中都会覆盖这个值,你需要把它加到sum.replace中。

value = item.quantity.toDouble() * basePrice

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

或者你也可以用更简单的方式获得

val valueOfAllItems = stockList.map{ it.quantity.toDouble() * basePrice }.sum()
© www.soinside.com 2019 - 2024. All rights reserved.