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))