2016-09-12 7 views
0

Gibt es eine Möglichkeit zu vermeiden, eine Var zu verwenden, wenn die Initialisierung einer Variablen innerhalb einer beforeAll-Methode passiert (d. H. Nach der Instanziierung des Objekts)?Wie vermeidet man die Verwendung einer Var mit BeforeAll

Ich möchte Unveränderlichkeit bevorzugen ...

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

+0

Schau dir das an: http://eugenezhulenev.com/blog/2014/10/18/run-tests-in-stand alone-spark-cluster/Scheint in Ordnung zu sein, obwohl ich nicht weiß, was die Implikationen sein könnten, wenn ein Kontext im Konstruktor initialisiert wird. – Markon

Antwort

0

Der beste Weg für Sie Fall ist:

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

Es gibt kein 'faul var'. –

+0

das kompiliert für mich nicht, es denkt immer noch, dass es eine Neuzuweisung gibt –

0

Sie Objekt externe Begleiter dies zu erreichen, verwenden können, scala sicherstellen, dass es nur einer von denen ist:

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

Sie Testcode wird haben

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