Scala 从脚本启用REPL power用户模式(:power)

Scala 从脚本启用REPL power用户模式(:power),scala,interpreter,read-eval-print-loop,Scala,Interpreter,Read Eval Print Loop,我试图在Scala中将字符串动态解释为命令。为此,据我所知,我需要在电源模式下调用intp.exploration(“string”)(其中intp代表当前解释器,string代表我的命令),对吗 然而,我的问题是,我想从脚本内部实现这一点。因此,我正在寻找一种从脚本内部切换到超级用户模式的方法,然后调用intp.explain 有没有办法从脚本文件内部进行切换?如果从bash脚本或类似的脚本调用REPL,则可以通过scala.REPL.power系统属性立即启用:power模式 miles@l

我试图在Scala中将字符串动态解释为命令。为此,据我所知,我需要在电源模式下调用
intp.exploration(“string”)
(其中
intp
代表当前解释器,
string
代表我的命令),对吗

然而,我的问题是,我想从脚本内部实现这一点。因此,我正在寻找一种从脚本内部切换到超级用户模式的方法,然后调用intp.explain


有没有办法从脚本文件内部进行切换?

如果从bash脚本或类似的脚本调用REPL,则可以通过
scala.REPL.power
系统属性立即启用
:power
模式

miles@lewis$ 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>
miles@lewis$scala-Dscala.repl.power
欢迎使用Scala版本2.9.2(Java热点(TM)64位服务器虚拟机,Java 1.7.0_05)
键入要计算的表达式。
键入:有关详细信息的帮助。
斯卡拉>
[信息]编译器初始化时间:2.186秒。
斯卡拉>
**电源用户模式已启用-蜂鸣BOOP SPIZ**
**:相位已设置为“typer”**
**scala.tools.nsc.\已导入**
**全局。和定义。也导入了**
**尝试:帮助,力量**
斯卡拉>
[信息]总初始化时间:5.105秒。
斯卡拉>

事实上,我发现了一个丑陋的解决方案:你可以在一个文件中编写
:power
(我们称之为
init
),然后单独运行scala解释器。然后,执行
:load init
(这会将您切换到电源模式),然后从同一提示符
:load program
执行要解释字符串的程序。
intp
变量现在应该可见。然而,我欢迎更漂亮的解决方案:-)不。试过了,但不起作用(在我的机器上也有2.9.2版本)。如果您运行scala-Dscala.repl.power,那么它将工作(虽然在加载解释器和启用电源模式之间有一些延迟),但是如果您运行scala-Dscala.repl.power脚本文件,那么它不会工作。解释器抱怨找不到值intp。有没有办法在我们执行时自动执行
vals.isettings.maxPrintString=Int.MaxValue