scala - 如何在 scala 中覆盖 Trait 中的可变变量?

标签 scala overriding

我想在构造函数中覆盖 Trait 中的一个可变变量。但它会提示“在 Int 类型的特征 A 中覆盖变量 a;变量 a 不能覆盖可变变量”。为什么scala不允许我这样做?对此有什么最佳实践吗?谢谢

trait A{
  var a:Int = _
}

class B(override var a:Int) extends A

最佳答案

你不能覆盖它(因为我现在不知道的原因,除了,无论如何都可以修改变量,所以为什么要覆盖它们),但你可以不初始化声明的变量并将后者委托(delegate)给 B :

trait A {
  var a: Int
}

class B(var a: Int) extends A

关于scala - 如何在 scala 中覆盖 Trait 中的可变变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16413986/

相关文章:

Android SDK map View 。获取 map 缩放级别/位置

javascript - 如何将参数从 scala.html 传递到 play 框架中的 javascript?

scala - scala中的奇怪类型推断

regex - Scala 正则表达式 - 如何匹配大括号内部但转义大括号本身

javascript - Knockout 中的类继承与方法覆盖

java - 用协变类型覆盖变量

eclipse - maven-scala-plugin 给出 pom 文件错误

scala - 替代构造函数中的固定类型参数

php - FOSUserBundle 覆盖不一致

java - 我如何强制我的类的任何子类始终调用它们正在覆盖的父类的实现方法?