我想模拟象棋游戏。
为此,我想创建一个抽象类Piece,该类将播放器和位置作为参数。由此,我想扩展到其他类,例如Pawn

trait Piece(player: Int, pos: Pos) = {

  def spaces(destination: Pos): List[Pos]

}

case class Pawn extends Piece = {
//some other code
}


但是,我认为我不允许将参数传递给特征,例如trait Piece(player: Int, pos: Pos)

那么,如何有一个包含字段的抽象类Piece

最佳答案

您可以使用抽象类

abstract class Piece(player: Int, pos: Pos) {
  ...
}

case class Pawn(player: Int, pos: Pos) extends Piece(player, pos)


或者(可能更好),您可以在特征中抽象地定义这些成员

trait Piece {
  def player: Int
  def pos: Pos
  ...
}

case class Pawn(player: Int, pos: Pos) extends Piece

关于scala - 将参数传递给特征,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38993974/

10-16 17:16