考虑这个特性'Person'和这个类'PersonImpl':
trait Person {
def name: String
def surname: String
def married: Boolean
def married_=(state: Boolean): Unit
override def toString(): String = name + " " + surname + " " + married
}
class PersonImpl(override val name: String,
override val surname: String,
override var married: Boolean) extends Person
使用REPL(来自命令行的scala,只需打开一个终端并输入scala)我创建了特征和类。我有以下消息: -defined Trait Person -defined class PersonImpl
然后,仍然从命令行输入:
我可以清楚地看到我的人已被创建并且var field已经从false变为true。行。 现在我只是用另一个类和另一个特性重复相同的过程:
trait Element {
def x: Int
def y: Int
def width: Int
def height: Int
def x_:(i:Int):Unit
def y_:(i:Int):Unit
override def toString(): String = x + " " + y + " " + width + " " + height
}
class GameElement(override var x: Int,override var y: Int,override val width: Int,override val height: Int) extends Element
只要在命令行中输入类,我就会遇到错误: '变量x覆盖任何内容'
这怎么可能?
答案 0 :(得分:1)
这不是推荐在Scala中执行此操作的方法 - 请查看使用案例类。
但要回答你的问题,你应该def x_:(i:Int):Unit
更改为def x_=(i:Int):Unit
y