2017-05-11 44 views
2

我運行火花2 - 與階2.11.8殼和想知道關於以下行爲,其中每行是在外殼被執行的代碼塊:火花殼不重寫方法定義

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)會導致這種行爲,如果這是在一個單獨的塊中移動的,代碼就可以正常工作。

所以我的問題:這是所需的行爲或錯誤?

+0

這似乎是對我來說(特別是如果分割VAL TMP-myMethod的一個bug (); val out = tmp到兩行,它會得到第二個定義)。我會建議提交一個bug –

+0

@AssafMendelson我剛剛創建了一個jiira:https://issues.apache.org/jira/browse/SPARK-20706 –

回答