2012-04-04 13 views
12

と私は同じディレクトリ内の2つの別々のコンパイルされていないScalaのファイルがある場合:do.scalaを実行しているとき、私はエラーを取得するScalaスクリプトは、同じディレクトリ内の他のコンパイルされていないスカラコードを参照できますか?

// do.scala 
hello.world() 

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

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

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

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

import、package、classpath、scalaコマンドラインツールなどを使用して、コンパイルされていない他のスカラファイルを呼び出す方法はありますか?

+0

私はまもなく同様の質問を投稿しました。その答えは役に立つかもしれません:http://stackoverflow.com/questions/3760645/in-scala-is-it-possible-to-write-a-script-which-refers-to-another-script –

答えて

2

オンザフライでのコンパイル/コンパイラの埋め込み。 Twitterのutil-evalはこのような例の1つです。

8

はたぶんあなたが探しているではない正確に何が、ScalaのREPLからあなたは同じ結果を達成するために

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

を-interactive for scripting

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

も有効です。

:helpを使用すると、REPLシェルが実行できるより興味深いものが見つかります。

+0

興味深い。私がコードから呼び出す必要がある他の瓶があれば、同じトリックを使うことができますが、 "cat << EOF | scala -cp jarfile.jar"を使うことができますか? – user1305156

+0

これを行うか、単に "cat myreplcommandsfile | scala"は動作しますが、それ以降はシェルを使用できなくなります。 – user1305156

+0

クラスパスにjarやディレクトリを追加できるようにするもう一つのREPLトリック 'cp 'があります。そして、はい、私はそれも私のそれだと思った私はそれが終わった後、私のxterm州には恐ろしい何かを気づいた。それが何のための修正であるか分からない。単に出力をリダイレクトするだけでは役に立ちません。 – timday

関連する問題