Scala:如何计算未来一对成功的次数

Scala:如何计算未来一对成功的次数,scala,future,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 =>

在以下代码段中,调用
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):


如何获得已处理的金额数(在本例中为2)?如果且仅当两个
Future
s都成功,则应增加计数。

折叠中返回包含总数和计数的
Tuple2
如何:

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