将Scala文件加载到解释器中以使用函数?

81

我有一些在文件中定义的Scala函数,不是在类中定义的,并且我希望在Scala解释器中使用它们。我知道可以通过说scala filename.scala来运行文件并退出解释器,但是我想要运行文件然后留在解释器中,以便我可以进行一些测试。有没有人告诉我如何将文件简单地加载到解释器中,以便我可以使用其中定义的函数?


21
在Scala REPL中,:load /path/to/file的意思是加载指定路径下的文件并在REPL中运行它。 - Jamil
1
太棒了,这正是我在寻找的。不知道为什么这么难找到。 - user550617
1
Jamil,请将此作为答案发布,以便Bea Metitiri将其标记为答案。 - Illarion Kovalchuk
3个回答

103

在 Scala REPL 中输入 :load /path/to/file 命令,可以加载指定路径的文件。

要获取可用命令的完整列表,请键入 :help 命令。


4
这似乎是一次逐个评估定义的过程,如果文件具有封闭特质或前向引用,则无法正常工作。如Suresh的答案中所提到的那样,:paste /path/to/file更好地实现了这一点。请使用它进行操作。 - Brian McCutchon

24

有时候,:paste 可能比 :load 更好用。这里是一个如何使用 :paste 的示例。

scala> :paste
// Entering paste mode (ctrl-D to finish)

if (true)
  print("that was true")
else
  print("false")

[Ctrl-D]

// Exiting paste mode, now interpreting.

that was true

使用 :paste 命令可以加载文件,命令格式为 :paste [path]

scala> :paste ~/Desktop/repl_seeder.scala
Pasting file ~/Desktop/repl_seeder.scala...
defined object test1

scala> test1.main(Str)
my first scala program

4

提醒一下,要输入完整路径。我在Linux中发现了一个问题,就是这样做:

:load ~/fileName.scala

会出现错误消息 "That file does not exist"。为了解决这个问题,我执行了以下操作:

:load /complete/path/fileName.scala


这只是一个问题,因为Scala不知道如何将~扩展到您的主目录。 - Shane Bishop
相对路径也是被支持的。所以如果你输入 :load foo/bar/baz.scala,至少在今天它是可以工作的。 - 18446744073709551615

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接