kotlin - 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()
}
}
解决方案
您覆盖每个计算中的值。您需要将其添加到总和中。代替
value = item.quantity.toDouble() * basePrice
和
value += item.quantity.toDouble() * basePrice
或者你可以用更简单的方式得到它
val valueOfAllItems = stockList.map{ it.quantity.toDouble() * basePrice }.sum()
推荐阅读
- javascript - 使用 Gutenberg getEntityRecords 获取 woocommerce 产品类别
- redux - 当具有相同类型的第二个动作同时发生时,Epic 会忽略第一个承诺的结果
- php - PHP PDO 代码连接到数据库但不执行查询且不返回错误
- typo3 - Typoscript DatabaseQueryProcessor - 如果字段为空则滑动
- postgresql - PostgreSQL 日期范围聚合
- c# - 在 c# 中单击 MasterPage 中设置的文本框时显示警报消息
- javascript - 如何在 highstocks 中设置刻度间隔
- php - 我如何在我的另一个表中使用 id 的值,因为我自动创建它
- ruby - RedHat C 编译器不编译?
- angularjs - angularjs中如何做国民保险号正则表达式