Scala setter 和吸气剂
Scala setter and getters
考虑到这个特征 'Person' 和这个 class '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)我创建了特征和 class。我有以下消息:
-defined Trait 人
-defined class PersonImpl
然后,仍然在命令行中,我输入:
- val p: Person = new PersonImpl1("mario", "rossi", false)
- println(p)
- p.married=真
- 原则(p)
可以清楚的看到我的person已经创建好了,var字段married也由false变成了true。好的。
现在我用另一个 class 和另一个特征重复相同的过程:
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
只要我在命令行中输入 class,我就会 运行 进入错误:
'variable x overrides nothing'
这怎么可能?
这不是在 Scala 中执行此操作的推荐方法 - 请查看使用案例 类。
但要回答您的问题,您应该将 def x_:(i:Int):Unit
更改为 def x_=(i:Int):Unit
与 y
相同
考虑到这个特征 'Person' 和这个 class '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)我创建了特征和 class。我有以下消息: -defined Trait 人 -defined class PersonImpl
然后,仍然在命令行中,我输入:
- val p: Person = new PersonImpl1("mario", "rossi", false)
- println(p)
- p.married=真
- 原则(p)
可以清楚的看到我的person已经创建好了,var字段married也由false变成了true。好的。 现在我用另一个 class 和另一个特征重复相同的过程:
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
只要我在命令行中输入 class,我就会 运行 进入错误: 'variable x overrides nothing'
这怎么可能?
这不是在 Scala 中执行此操作的推荐方法 - 请查看使用案例 类。
但要回答您的问题,您应该将 def x_:(i:Int):Unit
更改为 def x_=(i:Int):Unit
与 y