Scala的特征是否有变量,而不仅仅是vals?

时间:2013-08-30 19:01:49

标签: scala var traits

我正在研究斯卡拉的特征,但尚未对其进行编程,这使其成为一个假设的问题。

到目前为止,我见过的所有示例都有具体或抽象的字段,只在其声明中使用val而不是var。可以在Scala特征中使用以var声明的字段吗?

TIA, 马修

1 个答案:

答案 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中编译varval的方式,这是有道理的。 val是一个包含自动生成的 getter 方法的私有字段,而var的唯一区别是它也有一个setter。