Scala中最终变量的用途是什么
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
最终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