Ich bin neu in Scala. Ich habe eine Funktion namens calculateSubTotal
mit einer Liste von Produkt-ID und Mengen geschrieben.Warum konnte eine Blockvariable in der Scala-Funktion nach der Ausführung des inneren Blocks (der inneren Blöcke) nicht aktualisiert werden?
Zuerst wird die Funktion ein Produkt aus der Datenbank für jede Produkt-ID abholen, dann individual sub total
berechnen und mit sub total
summieren. Ich möchte die berechnete Teilsumme zurückgeben. Die Berechnung ist in Ordnung, aber leider gibt es die initialized value
anstatt die calculated value
zurück. Was ist mit meinem Code? Der Code ist als: -
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
}
die obige Funktion Schauen Sie immer wieder 0.0, wie ich initialisiert. Was wird der richtige Code sein?
Was ist der resultierende Typ der 'Products.read()' Methode? Ist es "Zukunft [Option [Produkt]]"? –
Ja ... 'Products.read()' returns 'Zukunft [Option [Produkt]]' @ PawełJurczenko – Johir