我正在研究 Scala 特征,但尚未对其进行编程,因此这是一个假设性问题。
到目前为止,我看到的所有示例都有具体或抽象字段,它们仅val
在其声明中使用,而不是var
. var
可以在 Scala 特征中使用声明的字段吗?
TIA,马修
如果你尝试一下,你会发现它有效:
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
编译方式,这是有道理的。Aval
是一个带有自动生成的getter方法的私有字段,唯一的区别var
是它也有一个 setter。