user1305156
user1305156

Reputation: 201

Can a Scala script reference other uncompiled scala code in the same directory?

If I have two separate uncompiled scala files in the same directory as:

// hello.scala
object hello {
  def world() = println("hello world")
}

and:

// do.scala
hello.world()

I get an error when running do.scala:

$ scala do.scala
error: not found: value hello

Instead I have to compile the hello.scala file first and put it on the classpath to get it to work:

$ scalac hello.scala
$ scala -cp hello do.scala
hello world

Is there a way to get one script to call the other uncompiled scala file using the right use of import, package, classpath, the scala command line tool or something else?

Upvotes: 13

Views: 1483

Answers (3)

Fox Fairy
Fox Fairy

Reputation: 59

You can just put

:load /path/file

at the first line in the file you are going to load.

Upvotes: 0

timday
timday

Reputation: 24892

Maybe not exactly what you're looking for, but from the Scala REPL shell you can do

:load hello.scala
:load do.scala

to achieve the same result:

$ scala
Welcome to Scala version 2.9.1 (Java HotSpot(TM) Server VM, Java 1.6.0_26).
Type in expressions to have them evaluated.
Type :help for more information.

scala> :load hello.scala
Loading hello.scala...
defined module hello

scala> :load do.scala
Loading do.scala...
hello world

scala> 

If you're wanting something non-interactive for scripting

$ cat <<EOF | scala
:load hello.scala
:load do.scala
EOF

works too.

Use :help for more interesting things the REPL shell can do.

Upvotes: 8

pr1001
pr1001

Reputation: 21962

Looking into on the fly compilation/embedding the compiler. Twitter's util-eval is one such example.

Upvotes: 2

Related Questions