我用可变参数id和fieldStatus声明了案例类Field
和Enumeration FieldStatus
。
object FieldStatus extends Enumeration {
type FieldStatus = Value
val Empty, Black, White = Value
}
case class Field(var id: Int, var fieldStatus: FieldStatus) {
def changeFieldStatus(fieldStatus: FieldStatus) : Field = copy(id, fieldStatus)
}
在第二个案例类Gameboard
中,我实现了一种方法set
的{{1}}的fieldStatus。 Field
将Gameboard
保存在Field
中。
方法vertexList: MutableList[Field]
仅应更改所选set
的{{1}}。
fieldStatus
编译器只会向我抛出此错误:
Field
我还尝试访问案例类case class Gameboard[Field](vertexList: mutable.MutableList[Field], neigh: mutable.MutableList[Edge[Field]])
extends Graph[Field] {
def set(field: Int, fieldStatus: String): Gameboard[Field] = {
val fieldtoChange: Option[Field] = vertexList.get(field)
fieldtoChange match {
case Some(f) => {
fieldStatus match {
case "Black" => f.changeFieldStatus(FieldStatus.Black)
case "White" => f.changeFieldStatus(FieldStatus.White)
case "Empty" => f.changeFieldStatus(FieldStatus.Empty)
}
}
case None => println("Field not found on this Gameboard!")
}
copy(vertexList, neigh)
}
}
的成员变量...相同的错误。我是否误解了案例类? scala-docs并没有帮助我。
答案 0 :(得分:2)
Gameboard的Field
类型参数似乎正在遮盖同名的case类。一些可能的解决方案:
case class Gameboard(...) extends Graph[Field]
,除非您实际上计划使用不同类型的字段。我怀疑这是您要解决的问题。 class Gameboard[F <: Field]
。