Spark-shell 没有覆盖方法定义

Spark-shell not overriding method definition

我是 运行 Spark 2 - shell with scala 2.11.8 并且想知道以下行为,其中每一行都是要在 shell:

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"

所以如果我重新定义myMethod,在这种情况下似乎没有更新实现。我发现倒数第二条语句 (val out = tmp) 导致了这种行为,如果将其移到单独的块中,代码就可以正常工作。

所以我的问题是:这是期望的行为还是错误?

这确实是一个 Spark-Shell 错误(或更多是 Scala REPL 错误),将在 Spark 2.3 中解决:https://issues.apache.org/jira/browse/SPARK-20706