81

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
  • 66,414
  • 68
  • 253
  • 406

3 Answers3

102

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

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

Jamil
  • 2,150
  • 1
  • 19
  • 20
  • 4
    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
24

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
  • 16,374
  • 11
  • 66
  • 121
Suresh Babu
  • 241
  • 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
  • 1,110
  • 11
  • 14