2

私はこれが行われる場所を見たことがありませんが、私は以下を持っています:

abstract class Player { val user_id: Long }
case class AlivePlayer(user_id: Long, target_id: Long) extends Player
case class DeadPlayer(user_id: Long) extends Player

def getPlayers(game: Game):Option[List[Player]] = DB.withConnection { implicit connect =>
  SQL(
    """
      SELECT * FROM game_participants WHERE game_id = {game_id})
    """
  ).on(
    'game_id -> game.id
  ).as(Game.participantParser *)
}

この場合、次のメッセージでコンパイラエラーが発生します

error: type mismatch;  found   : anorm.ResultSetParser[List[Product with Serializable with models.Player]]  required: anorm.ResultSetParser[Option[List[models.Player]]]
).as(Game.participantParser *)

リターンタイプを単にとして指定するだけでは不十分なのはなぜOption[List[Player]]ですか?

4

1 に答える 1

1

エラー メッセージを考えると、 butGame.participantParserを返していないように思えます。私見、空の可能性があるa を返すだけです。Option[List[Player]]List[Player]getPlayersList[Player]

を返したい場合は、リストの前Option[]に追加するか、リストが空の場合はSome(...)単に返す必要があります。None

コメントで述べたように、Game.participantParser定義がなければ、さらにあなたを助けることはできません.

お役に立てれば。

于 2013-03-07T09:50:28.640 に答える