【发布时间】:2017-05-11 06:27:37
【问题描述】:
我正在运行 Spark 2 - shell 与 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) 会导致这种行为,如果将其移动到单独的块中,代码就可以正常工作。
所以我的问题是:这是期望的行为还是错误?
【问题讨论】:
-
这对我来说似乎是一个错误(特别是因为如果你将 val tmp-myMethod(); val out = tmp 分成两行,它会得到第二个定义)。我建议提交一个错误
-
@AssafMendelson 我刚刚创建了一个 jiira:issues.apache.org/jira/browse/SPARK-20706
标签: scala shell apache-spark-2.0