79

I have some Scala functions defined in a file, not in a class, and I would like to use them in the Scala interpreter. I know I can say scala filename.scala to simply run the file and exit the interpreter, but I would like to run the file and then stay in the interpreter so I can do some testing. Can anyone tell me how to simply load a file into the interpreter so I can use the functions defined within it?

Stefan Kendall
  • 64,006
  • 65
  • 247
  • 399

3 Answers3

101

type :load /path/to/file in Scala REPL.

You can get complete list of available commands by typing :help

Jamil
  • 2,130
  • 1
  • 19
  • 20
  • 3
    This seems to evaluate it one definition at a time, which doesn't work if the file has a sealed trait or forward references. `:paste /path/to/file` works better, as mentioned in Suresh's answer. – Brian McCutchon Sep 10 '17 at 21:07
22

On occasions, :paste might be your better friend (than :load). Here is an example on how to use :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

One can also use :paste to load a file using following command :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
erip
  • 15,290
  • 10
  • 62
  • 113
Suresh Babu
  • 221
  • 2
  • 3
4

Just reminder, put the complete path. I found problem in Linux by doing like this:

:load ~/fileName.scala

to get rid of error "That file does not exist" I did

:load /complete/path/fileName.scala

Esmaeil MIRZAEE
  • 944
  • 10
  • 13