我试图在 Scala 中重写 val,如下所示:
trait T{
val str: String
}
sealed abstract class Test extends T{
val str: String = "str"
}
class Test1 extends Test{
val str = super.str + "test1" //super may not be used on value str
}
但这拒绝编译。为什么?我想使用抽象类的值本身覆盖抽象类中的值。如何做到这一点?
在我的特殊情况下,我不能将它作为类参数传递。
最佳答案
Scala 编译器不允许在 val
上使用 super。如果您不关心重新评估,则可以使用 def
代替。
trait T{
def str: String
}
sealed abstract class Test extends T{
def str: String = "str"
}
class Test1 extends Test{
def str = super.str + "test1" //super may not be used on value str
}
defined trait T
defined class Test
defined class Test1
关于scala - 在 Scala 中覆盖 val,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39309321/