来自特征的Scala覆盖变量值

时间:2017-02-22 22:59:38

标签: scala

我有一个来自开源库的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,这绝对不是我想要使用的东西)

由于

1 个答案:

答案 0 :(得分:1)

您可以覆盖从特征继承的val。

override val v1 = somethingElse

不需要改变开源。

Scala Cookbook from Safari

在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"
}