繁体   English   中英

如何避免在BeforeAll中使用var

[英]How to avoid using a var with BeforeAll

当变量的初始化发生在beforeAll方法内部时(即在对象实例化之后),有没有一种避免使用var的方法?

我想支持不变性...

例如https://github.com/holdenk/spark-testing-base/blob/master/src/main/1.3/scala/com/holdenkarau/spark/testing/SharedSparkContext.scala

最好的解决方法是:

lazy val x: Type = _
override def beforeAll = {
  x = //you code
}

您可以使用外部随播对象来实现此目标,scala将确保其中只有一个:

object SparkContextProvider {
    val sparkContext: SparkContext = {
         val sc = new SparkContext(conf)
         setup(_sc)
         sc
    }
}

您的测试代码将具有

trait SharedSparkContext extends SparkContextProvider {
   val sc = SparkContextProvider.sparkContext
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM