Scala setter and getters



考虑这个特征'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(,我创建了特征和类。我有以下消息:-定义的特质人-定义的类 PersonImpl

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

  • val p: Person = new PersonImpl1("mario", "rossi", false(
  • println(p(
  • p.已婚=真
  • 普林恩(P(

我可以清楚地看到我的人已经被创造了,var字段已经从假变成了真。好吧。现在我正在重复相同的过程,只是使用另一个类和另一个特征:

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 不覆盖任何内容">

这怎么可能?

这不是在 Scala 中执行此操作的推荐方法 - 考虑改用案例类。

但是要回答您的问题,您应该def x_:(i:Int):Unit更改为 Def x_=(i:Int):Unit 对于 Y 相同

最新更新