Scala:如何计算Future对成功的次数

时间:2015-05-07 14:04:40

标签: scala future

在以下代码段中,调用getAmounts以获取按货币分组的金额,然后调用getRates以应用相应的汇率:

def getAmounts = Future(Map("EUR" -> 500d, "USD" -> 400d))
def getRates = Future(Map("EUR" -> 1d, "USD" -> 0.9))

getAmounts.flatMap { amounts =>
  getRates.map { rates =>
    amounts.foldLeft(0d)((total, amount) => total + (amount._2 * rates(amount._1)))
  }
}.map { println(_) }

这是输出(500.0 * 1 + 400 * 0.9):

860.0

如何获得处理的金额(在这种情况下为2)?只有当两个Future成功时,才应该增加计数。

1 个答案:

答案 0 :(得分:1)

如何在Tuple2中返回包含总数和计数的fold

amounts.foldLeft((0d, 0))
  ((accum, amount) => (accum._1 + (amount._2 * rates(amount._1)),accum._2 + 1))