求和Scala中的对象列表

时间:2014-01-08 20:31:13

标签: scala

以下是我设置模型的方法:

case class Game(id: Long)
case class GamePlayer(id: Long, gameId: Long, points: BigDecimal)

我想得到所有游戏玩家积分的总和。所以这就是我的尝试:

val pointTotal = allGames.toSeq.map(allGamePlayers(_.id).map(_.points)).sum

我如何在Scala中使用它?

2 个答案:

答案 0 :(得分:2)

在这里猜测,因为你没有指定某些类型:

val pointTotal = (
  allGames flatMap {
    game => allGamePlayers(game.id) map (_.points)
  }
).sum

请注意,必须明确指定game,否则编译器会认为您正在尝试将lambda传递给allGamePlayers

答案 1 :(得分:1)

val pointTotal = allGames.flatMap((g: Game) => allGamePlayers(g.id).map(_.points)).sum

你也可以使用列表理解:

val pointTotal = (for(game <- allGames;
                     player <- allGamePlayers(game.id)
                 ) yield player.points).sum