13

同じディレクトリに2つの別々のコンパイルされていないscalaファイルがある場合:

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

と:

// do.scala
hello.world()

do.scala を実行するとエラーが発生します。

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

代わりに、最初に hello.scala ファイルをコンパイルし、それをクラスパスに配置して動作させる必要があります。

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

インポート、パッケージ、クラスパス、scala コマンド ライン ツールなどを適切に使用して、1 つのスクリプトを別のコンパイルされていない scala ファイルを呼び出す方法はありますか?

4

3 に答える 3

8

たぶんあなたが探しているものとは正確には一致しませんが、ScalaREPLシェルからあなたはすることができます

:load hello.scala
:load do.scala

同じ結果を達成するには:

$ 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> 

スクリプト用に非対話型のものが必要な場合

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

も動作します。

:helpREPLシェルが実行できるより興味深いことのために使用します。

于 2012-04-04T12:59:05.353 に答える
2

その場でのコンパイル/コンパイラの埋め込みを調べます。Twitter のutil-evalはその一例です。

于 2012-04-04T12:16:37.050 に答える