首页 文章

斯卡拉二传手和吸气剂

提问于
浏览
1

考虑这个特性'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

然后,仍然从命令行,我输入:

  • val p:Person = new PersonImpl1("mario","rossi",false)

  • println(p)

  • p.married = true

  • prinln(p)

我可以清楚地看到我的人已被创建并且已结婚的var字段已从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

一旦我在命令行中键入类,我就会遇到错误:'variable x overrides nothing'

这怎么可能?

1 回答

  • 1

    这不是在Scala中执行此操作的推荐方法 - 请查看使用案例类 .

    但要回答你的问题,你应该将 def x_:(i:Int):Unit 改为def x_=(i:Int):Unit 同样的y

相关问题