2014-01-08 1 views
2

의 개체의 목록은 여기에 내 모델이 설정 한 방법은 다음과 같습니다합계 스칼라

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

나는 게임의 선수 포인트 모두의 합계를 좀하고 싶습니다. 그래서 여기 제가 시도한 것이 있습니다 :

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

어떻게 이것을 스칼라에서 사용할 수 있습니까?

+0

' allGames'와'allGamePlayers()'의 서명은 무엇입니까? 'allGamePlayers()'는 실제로 함수를 인수로 사용해야합니까? –

답변

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 
+0

작동하는 것처럼 보였지만 여전히 동일한 오류가 발생했습니다. '확장 된 함수의 누락 매개 변수 유형 ((x $ 1) => x $ 1.id)' – goo

+0

@ 존 - 응답을 업데이트했습니다. 게임의 종류를 지정하면 작동합니다. – Lee

2

이 여기 추측 : game 명시 적으로 지정해야합니다

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

참고를, 그렇지 않으면 컴파일러는 당신이 람다를 전달하려고한다고 생각합니다. allGamePlayers