2012-09-23 7 views
5

文字列をScalaのコマンドとして動的に解釈しようとしています。これについては、私が理解しているところから、intp.interpret("string")intpは現在のインタプリタを表し、stringはmyコマンド)に電話する必要があります。スクリプトからREPLパワーユーザーモード(:電源)を有効にします。

しかし、私の問題は、スクリプトの中からそれをやりたいということです。したがって、私は、スクリプト内からパワーユーザーモードに切り替える方法を探していて、intp.interpretを呼び出します。

この切り替えをスクリプトファイル内から行う方法はありますか?

+1

は実際に私が醜い解決策を見つけた:あなたは書くことができます ':power' (initと呼ぶ)、そしてscalaインタープリタを単独で実行します。次に、 ':load init'(パワーモードに切り替える)を実行してから、同じプロンプト':load program'を実行して、文字列を解釈したいプログラムを実行します。 'intp'変数が表示されるはずです。しかし、私はより良い解決策を歓迎します:-) –

答えて

1

あなたはbashスクリプトからREPLを起動するか、somesuchしている場合、あなたはscala.repl.powerシステムプロパティを経由して、すぐに: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

いいえ。それを試しても動作しません(私のマシンでは2.9.2バージョンもあります)。 scala -Dscala.repl.powerを実行すると、動作します(ただし、インタプリタの読み込みと電源モードの有効化の間に若干の遅延があります)。ただし、scala -Dscala.repl.powerスクリプトファイルを実行すると、 。インタープリターは、値intpが見つからないと不平を言う。 –

関連する問題