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()
我是 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()