Я новичок в scala. Я написал функцию с именем calculateSubTotal
со списком идентификаторов и количества продуктов.Почему блочная переменная в scala-функции не могла обновиться после выполнения внутреннего блока?
Сначала функция будет извлекать продукт из базы данных для каждого идентификатора продукта, затем рассчитать individual sub total
и подытожить sub total
. Я хотел бы вернуть расчетную сумму. Расчет в порядке, но, к сожалению, он возвращает initialized value
, а не calculated value
. Что с моим кодом. Код не такой: -
def calculateSubTotal(productIds: Seq[Int], quantities: Seq[Int]) = {
var subTotal = 0.0
for (index <- 0 to productIds.length - 1) {
val productId = productIds(index)
val quantity = quantities(index)
val futureProduct = Products.read(productId)
for {
product <- futureProduct
} yield {
val listPrice = product.get.listPrice
subTotal += listPrice * quantity
}
}
subTotal
}
Посмотрите, что функция выше всегда возвращает 0.0, поскольку я инициализирован. Какой будет правильный код?
Что такое полученный метод 'Products.read()'? Это 'Future [Option [Product]]'? –
Да ... 'Products.read()' возвращает 'Future [Option [Product]]' @ PawełJurczenko – Johir