我幾乎總是有一個或兩個Scala REPL會話,這使得Java或Scala類很容易進行快速測試。但是如果我改變一個類並重新編譯它,那麼REPL會繼續加載舊的。有沒有辦法讓它重新加載類,而不必重新啓動REPL?如何在Scala REPL中重載類或包?
只給一個具體的例子,假設我們有一個文件Test.scala:
object Test { def hello = "Hello World" }
我們編譯它,並啓動REPL:
~/pkg/scala-2.8.0.Beta1-prerelease$ bin/scala
Welcome to Scala version 2.8.0.Beta1-prerelease
(Java HotSpot(TM) Server VM, Java 1.6.0_16).
Type in expressions to have them evaluated.
Type :help for more information.
scala> Test.hello
res0: java.lang.String = Hello World
然後,我們在源文件更改爲
object Test {
def hello = "Hello World"
def goodbye = "Goodbye, Cruel World"
}
,但我們不能使用它:
scala> Test.goodbye
<console>:5: error: value goodbye is not a member of object Test
Test.goodbye
^
scala> import Test;
<console>:1: error: '.' expected but ';' found.
import Test;
我想這是REPL工作表的一個好處 – nafg 2015-11-01 04:21:49