我用可变参数id和fieldStatus声明了case类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
为fieldStatus实现了一个方法one Field
。该Gameboard
保存Field
在S vertexList: MutableList[Field]
。该方法set
仅应更改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)
}
}
编译器只会向我抛出此错误:
Error:(54, 29) value changeFieldStatus is not a member of type parameter Field
case "Black" => f.changeFieldStatus(FieldStatus.Black)
我也尝试访问case类的成员变量Field
...相同的错误。我是否误解了案例类?在斯卡拉-docs的didnt有帮助我。
看起来Field
Gameboard的type参数正在遮盖同名的case类。一些可能的解决方案:
case class Gameboard(...) extends Graph[Field]
,除非您实际上计划使用其他类型的字段。我怀疑这是您要解决的问题。class Gameboard[F <: Field]
。本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句