以下是我设置模型的方法:
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中使用它?
答案 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