Scala:如何计算 Future 对成功的次数
Scala: How to count how many times a Future pair succeded
在以下代码片段中调用 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
都成功时,才应该增加计数。
如何在包含总数和计数的 fold
中返回 Tuple2
:
amounts.foldLeft((0d, 0))
((accum, amount) => (accum._1 + (amount._2 * rates(amount._1)),accum._2 + 1))
在以下代码片段中调用 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
都成功时,才应该增加计数。
如何在包含总数和计数的 fold
中返回 Tuple2
:
amounts.foldLeft((0d, 0))
((accum, amount) => (accum._1 + (amount._2 * rates(amount._1)),accum._2 + 1))