列表以下是我有我的模型建立:总和物体在斯卡拉
case class Game(id: Long)
case class GamePlayer(id: Long, gameId: Long, points: BigDecimal)
我想获得的所有游戏的玩家点的总和。所以这里是我的尝试:
val pointTotal = allGames.toSeq.map(allGamePlayers(_.id).map(_.points)).sum
我怎么会得到这个工作在斯卡拉?
列表以下是我有我的模型建立:总和物体在斯卡拉
case class Game(id: Long)
case class GamePlayer(id: Long, gameId: Long, points: BigDecimal)
我想获得的所有游戏的玩家点的总和。所以这里是我的尝试:
val pointTotal = allGames.toSeq.map(allGamePlayers(_.id).map(_.points)).sum
我怎么会得到这个工作在斯卡拉?
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
猜测在这里,因为你没有指定某些类型:
val pointTotal = (
allGames flatMap {
game => allGamePlayers(game.id) map (_.points)
}
).sum
注意game
必须明确指定,否则编译器认为你试图通过一个lambda到allGamePlayers
什么是' allGames'和'allGamePlayers()'的签名?并且应该'allGamePlayers()'真的把一个函数当作一个参数? –