2017-05-11 2 views
2

Ich bin mit Spark-2 - Shell mit scala 2.11.8 und frage, über das das folgende Verhalten, wobei jede Zeile ein Code-Block ist in der Schale ausgeführt werden:Funkenschale überschreiben nicht Methodendefinition

def myMethod() = "first definition" 

val tmp = myMethod(); val out = tmp 

println(out) // prints "first definition" 

def myMethod() = "second definition" // override above myMethod 

val tmp = myMethod(); val out = tmp 

println(out) // should be "second definition" but is "first definition" 

Wenn ich also myMethod neu definiere, scheint die Implementierung in diesem Fall nicht aktualisiert zu werden. Ich fand heraus, dass die vorletzte Anweisung (val out = tmp) dieses Verhalten verursacht, wenn dieser in einem separaten Block verschoben wird, funktioniert der Code einwandfrei.

Also meine Frage: Ist das das gewünschte Verhalten oder ein Bug? Diese

+0

Dies scheint ein Bug zu mir (vor allem da, wenn Sie teilen das val tmp-myMethod(); val out = tmp zu zwei Zeilen würde es die zweite Definition bekommen). Ich würde vorschlagen, einen Fehler zu senden –

+0

@AssafMendelson Ich habe gerade eine jiira erstellt: https://issues.apache.org/jira/browse/SPARK-20706 –

Antwort

Verwandte Themen