我正在研究斯卡拉的特征,但尚未对其进行编程,这使其成为一个假设的问题。
到目前为止,我见过的所有示例都有具体或抽象的字段,只在其声明中使用val
而不是var
。可以在Scala特征中使用以var
声明的字段吗?
TIA, 马修
答案 0 :(得分:3)
如果您尝试它,您会看到它有效:
scala> trait TestTrait {
| var x = 1
| }
defined trait TestTrait
scala> val t = new TestTrait { }
t: TestTrait = $anon$1@4c32060c
scala> t.x = 2
t.x: Int = 2
scala> t.x
res0: Int = 2
如果你读到在Scala中编译var
和val
的方式,这是有道理的。 val
是一个包含自动生成的 getter 方法的私有字段,而var
的唯一区别是它也有一个setter。