【发布时间】:2016-07-14 12:00:05
【问题描述】:
我是 scala 的新手。我编写了一个名为 calculateSubTotal 的函数,其中包含产品 ID 和数量列表。
首先,该函数将从数据库中为每个产品 id 挑选一个产品,然后计算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
标签: playframework-2.0 postgresql-9.4 slick-3.0