gpt4 book ai didi

scala - 在 Scala 中覆盖 val

转载 作者:行者123 更新时间:2023-12-04 00:06:51 28 4
gpt4 key购买 nike

我试图在 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com