2012-04-04 9 views
12

Jeśli mam dwa oddzielne pliki Nieskompilowany Scala w tym samym katalogu co:Czy skrypt Scala może odwoływać się do innego nieskompilowanego kodu scala w tym samym katalogu?

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

oraz:

// do.scala 
hello.world() 

otrzymuję komunikat o błędzie podczas uruchamiania do.scala:

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

Zamiast Najpierw muszę skompilować plik hello.scala i umieścić go na ścieżce klas, aby uruchomić go:

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

Czy istnieje sposób na uzyskanie jednego skryptu do wywołania innego nieskompilowanego pliku scala za pomocą właściwego użycia importu, pakietu, ścieżki klasy, narzędzia wiersza poleceń scala lub czegoś innego?

+0

Wcześniej zamieściłem podobne pytanie. Odpowiedzi mogą być przydatne: http://stackoverflow.com/questions/3760645/in-scala-is-it-possible-to-write-a-script-which-resfers-to-another-script –

Odpowiedz

2

Zaglądanie do kompilacji w locie/osadzanie kompilatora. Jednym z takich przykładów jest Twitter util-eval.

8

Może nie dokładnie to, czego szukasz, ale od Scala REPL shell można zrobić

:load hello.scala 
:load do.scala 

aby osiągnąć ten sam wynik:

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

Jeśli chce coś non -interaktywny dla skryptów

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

działa również.

Użyj :help, aby uzyskać więcej interesujących rzeczy, które może wykonać powłoka REPL.

+0

Interesujące. Gdybym miał inne słoiki, które musiałem wywołać z kodu, mógłbym użyć tej samej sztuczki, ale z "cat << EOF | scala -cp jarfile.jar"? – user1305156

+0

Robi to lub po prostu "cat myreplcommandsfile | scala" działa, ale sprawia, że ​​moja skorupa nie nadaje się do użytku po tym irytująco. – user1305156

+0

Zauważam, że istnieje inna sztuczka REPL ": cp ", która twierdzi, że pozwala ci dodać słoik lub katalog do ścieżki klasy. I tak, zauważyłem, że to zrobiło coś strasznego dla mojego stanu xterm po tym, jak to się skończyło, ale myślałem, że to tylko ja. Nie jestem pewien, co to jest; proste przekierowanie wyników nie wydaje się pomóc. – timday

Powiązane problemy