Kotlin пользовательский геттер и изменяемый список - PullRequest
0 голосов
/ 22 апреля 2020

Я новичок в Kotlin и в настоящее время точно не знаю, как правильно работать с геттерами и сеттерами. Я хочу написать классный продукт. В этом классе есть переменная 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)

Помощь PLZ.

РЕДАКТИРОВАТЬ: Вот окончательное решение (благодаря @AyTee и @ Tenfour04)

class Product(val basePrice: Double, val stockList: MutableList<Stock>) {
    val valueOfAllItems: Double
        get() {
           return stockList.map{it.quantity.toDouble() * basePrice}.sum()
        }
}

1 Ответ

1 голос
/ 22 апреля 2020

Вы перезаписываете значение в каждом расчете. Вы должны добавить это к сумме. замените

value = item.quantity.toDouble() * basePrice

на

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

или вы можете получить его более простым способом

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