Scala中最终变量的用途是什么

Scala中最终变量的用途是什么,scala,Scala,Scala中最终var的用法是什么?行为是什么。有任何用例吗 (另请参见,非常接近,但不相同)final具有重载含义 它可以表示“不能在子类中重写”,因此final var apm@mara:~$ skala -Yoverride-vars Welcome to Scala version 2.11.0-20130811-132927-95a4d6e987 (OpenJDK 64-Bit Server VM, Java 1.7.0_25). Type in expressions to have

Scala中
最终var
的用法是什么?行为是什么。有任何用例吗


(另请参见,非常接近,但不相同)

final
具有重载含义

它可以表示“不能在子类中重写”,因此
final var

apm@mara:~$ skala -Yoverride-vars
Welcome to Scala version 2.11.0-20130811-132927-95a4d6e987 (OpenJDK 64-Bit Server VM, Java 1.7.0_25).
Type in expressions to have them evaluated.
Type :help for more information.

scala> trait Foo { var v = 7 }
defined trait Foo

scala> trait Bar extends Foo { override var v = 8 }
defined trait Bar

scala> trait Foo { final var v = 7 }
defined trait Foo

scala> trait Bar extends Foo { override var v = 8 }
<console>:8: error: overriding variable v in class Foo$class of type Int;
 variable v cannot override final member
       trait Bar extends Foo { override var v = 8 }
                                            ^
其中e是一个常数表达式(§6.24)。最后一个修饰符必须是 存在并且不能给出类型注释。参考 常量值x本身被视为常量表达式;在里面 生成的代码将被def-inition的右侧替换 e面


编辑:对不起,我没有注意到你没有问这个问题。孩子们正准备睡觉、刷牙等等,有点心烦意乱。

我试着声明一个
私有的final var
并分配它,然后重新分配,它符合规定,这里的final到底是什么意思?你知道常量值定义需要显式final修饰符的原因吗,即使它们是在最终的类或对象中定义的?
final val x = e