【问题标题】:Functional computation of list-values列表值的功能计算
【发布时间】:2012-03-05 06:07:13
【问题描述】:

我有 2 个包含彩票实例的列表。

一个列表包含赢得特别奖的门票,另一个列表包含获得最终数字命中的门票。

现在我必须消除那些有多余号码的彩票并将奖品加在一起。

case class Ticket(number:Long, prize:Long)

val specialPrizes    = List(Ticket(42, 1000), Ticket(66, 2000))
val finalDigitPrizes = List(Ticket(42, 50))

这将产生一个包含合并票证的列表,其中包含累积的奖品:

val finalList = List(Ticket(42, 1050), Ticket(66, 2000))

在没有临时变量、索引计数器等的情况下,在功能上执行此操作的最有效方法是什么?

【问题讨论】:

    标签: scala functional-programming scala-collections


    【解决方案1】:
    scala> (specialPrizes ++ finalDigitPrizes).groupBy(_.number).map {
         |   case (n, ts) => Ticket(n, ts.map(_.prize).sum)
         | }
    res1: scala.collection.immutable.Iterable[Ticket] = List(Ticket(42,1050), Ticket(66,2000))
    

    【讨论】:

    • groupBy 再次获胜。我应该一直使用它。
    猜你喜欢
    • 1970-01-01
    • 2022-01-12
    • 2018-01-08
    • 2017-10-15
    • 1970-01-01
    • 1970-01-01
    • 2017-11-25
    • 1970-01-01
    相关资源
    最近更新 更多