我有一个来自开源库的scala代码,如下所示: -
//somewhere in the open source code
trait A
{
val v1=callToSomeFunc()
def usefulFunc1() {}
def usefulFunc2() {}
}
必需:我继承了这个特性,我不希望我的类在任何情况下在继承特征A时调用'callToSomeFunc()'但想要使用特征A的usefulFunc1()和usefulFunc2()。 p>
你能帮忙吗?
(对于那些来自Spark背景的人,我遇到了多个sparkcontexts错误,因为我继承的开源库定义了一个sparkcontext,这绝对不是我想要使用的东西)
由于
答案 0 :(得分:1)
您可以覆盖从特征继承的val。
override val v1 = somethingElse
不需要改变开源。
在Scala 2.11.8中适用于我的代码
object TestIt extends App {
val jump = new TestIt
jump.sayWhat()
}
trait base {
val dontGoChangin: String = "dontGoChangin"
def sayWhat() = {println(dontGoChangin)}
}
class TestIt extends base{
override val dontGoChangin: String = "toTryToPleaseMe"
}