2012-09-23 16 views
5

Ich versuche, eine Zeichenfolge als ein Befehl in Scala dynamisch zu interpretieren. Dazu, was ich verstehe, muss ich intp.interpret("string") anrufen (wo steht für den aktuellen Interpreter und string für mein Kommando), während im Power-Modus, nicht wahr?Aktivieren REPL Power-Benutzermodus (: Power) von Skript

Allerdings ist mein Problem, dass ich das in einem Skript tun möchte. Daher suche ich nach einer Möglichkeit, aus einem Skript in den Power-User-Modus zu wechseln und dann intp.interpret aufzurufen.

Gibt es eine Möglichkeit, dieses Umschalten von innerhalb einer Skriptdatei zu tun?

+1

Eigentlich fand ich eine hässliche Lösung: Sie können schreiben ': power' in einer Datei (nennen wir es "init") und dann Scala-Interpreter alleine ausführen. Dann, ': load init' (was Sie in den Power-Modus schaltet) und dann von der gleichen Eingabeaufforderung': load program', um das Programm auszuführen, das die Zeichenfolge interpretieren will. Die Variable 'intp' sollte jetzt sichtbar sein. Allerdings würde ich mehr hübsche Lösungen begrüßen :-) –

Antwort

1

Wenn Sie die REPL aus einem Bash-Skript sind aufgerufen wird, etc. zu jagen, dann können Sie :power Modus sofort über die scala.repl.power Systemeigenschaft ermöglichen,

[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

Nein. Versucht, dass es aber nicht funktioniert (mit Version 2.9.2 auch in meiner Maschine). Wenn Sie scala -Dscala.repl.power ausführen, wird es funktionieren (es gibt eine gewisse Verzögerung zwischen dem Laden des Interpreters und der Aktivierung des Power-Modus), aber wenn Sie scala -Dscala.repl.power-Skriptdatei ausführen, dann tut es das nicht . Der Interpreter beklagt sich, dass der Wert intp nicht gefunden wurde. –