2012-09-23 94 views
5

我想動態地將一個字符串解釋爲Scala中的命令。爲此,根據我的理解,我需要在電源模式下調用intp.interpret("string")(其中intp代表當前的譯員,string代表我的命令),對吧?從腳本啓用REPL高級用戶模式(:電源)

但是,我的問題是,我想從腳本內部做到這一點。因此,我正在尋找一種從腳本內切換到高級用戶模式的方法,然後調用intp.interpret。

有沒有辦法從腳本文件中進行切換?

+1

其實我發現了一個醜陋的解決方案:你可以寫':power'在一個文件中(我們稱之爲'init'),然後單獨運行scala解釋器。然後,執行':load init'(它會切換到電源模式),然後從'load program'執行想要解釋字符串的程序。 'intp'變量現在應該是可見的。但是,我會歡迎更漂亮的解決方案:-) –

回答

1

如果你從一個bash腳本調用REPL或諸如此類,那麼你可以啓用立即:power模式通過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

不。試過,但它不起作用(2.9.2版本以及我的機器)。如果你運行scala -Dscala.repl.power,那麼它將工作(雖然在解釋器的加載和啓用電源模式之間有一些延遲),但是如果你運行scala -Dscala.repl.power腳本文件,那麼它不會。解釋器抱怨找不到intp值。 –