2012-09-23 8 views
5

Próbuję dynamicznie interpretować ciąg znaków jako polecenie w Scali. W tym celu, z tego co rozumiem, muszę zadzwonić pod numer intp.interpret("string") (gdzie intp oznacza bieżący interpreter i string dla mojego polecenia) będąc w trybie zasilania, prawda?Włącz tryb użytkownika zasilania REPL (: zasilanie) ze skryptu

Jednak moim problemem jest to, że chcę to zrobić z wnętrza skryptu. Dlatego szukam sposobu na przełączenie się do trybu użytkownika zaawansowanego z poziomu skryptu, a następnie wywołanie intp.interpret.

Czy jest jakiś sposób, aby to zmienić z wewnątrz pliku skryptu?

+1

Właściwie znalazłem brzydki rozwiązanie: Możesz napisać ': power' w pliku (nazwijmy go 'init'), a następnie uruchom interpreter scala. Następnie wykonaj polecenie ': load init' (która przełączy Cię do trybu zasilania), a następnie z tego samego polecenia': load program' uruchom program, który chce zinterpretować ciąg znaków. Zmienna 'intp' powinna być teraz widoczna. Chciałbym jednak przyjąć więcej ładnych rozwiązań :-) –

Odpowiedz

1

Jeśli powołując się na rEPL ze skryptu bash lub somesuch następnie można włączyć tryb :power natychmiast za pośrednictwem właściwości systemu scala.repl.power,

[email protected]$ scala -Dscala.repl.power 
Welcome to Scala version 2.9.2 (Java HotSpot(TM) 64-Bit Server VM, Java 1.7.0_05) 
Type in expressions to have them evaluated. 
Type :help for more information. 

scala> 
[info] compiler init time: 2.186 s. 

scala> 
** Power User mode enabled - BEEP BOOP SPIZ ** 
** :phase has been set to 'typer'.   ** 
** scala.tools.nsc._ has been imported  ** 
** global._ and definitions._ also imported ** 
** Try :help, vals.<tab>, power.<tab> ** 

scala> 
[info] total init time: 5.105 s. 

scala> 
+0

Nie. Próbowałem, ale to nie działa (z wersją 2.9.2 również w moim komputerze). Jeśli uruchomisz scala -Dscala.repl.power, to zadziała (jest pewne opóźnienie między ładowaniem interpretera i włączaniem trybu zasilania), jednak jeśli uruchomisz skrypt scala -Dscala.repl.power, to nie . Tłumacz skarży się, że nie znaleziono wartości intp. –

Powiązane problemy