Kotlin自定义的getter和mutable list。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin自定义的getter和mutable list。相关的知识,希望对你有一定的参考价值。

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

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

value = item.quantity.toDouble() * basePrice

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

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

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

以上是关于Kotlin自定义的getter和mutable list。的主要内容,如果未能解决你的问题,请参考以下文章

Kotlin类与对象 ① ( 成员属性 | Kotlin 自动为成员字段生成 getter 和 setter 方法 | 手动设置成员的 getter 和 setter 方法 | 计算属性 )

Kotlin类的初始化 ① ( 成员属性 | Kotlin 自动为成员字段生成 getter 和 setter 方法 | 手动设置成员的 getter 和 setter 方法 | 计算属性 )

Kotlin Class基础

mutable.PriorityQueue 为具有更多属性的类自定义排序

错误记录Kotlin 编译报错 ( Smart cast to ‘Xxx‘ is impossible, because ‘xxx‘ is a mutable property ... )

kotlin getter 和 setter 期望成员声明错误?