2012-09-23 22 views
5

Estoy intentando interpretar dinámicamente una cadena como un comando en Scala. Para esto, por lo que entiendo, necesito llamar al intp.interpret("string") (donde intp representa el intérprete actual y string para mi comando) mientras está en modo de energía, ¿no?Habilitar REPL power user mode (: power) del script

Sin embargo, mi problema es que quiero hacer eso desde dentro de un script. Por lo tanto, estoy buscando una forma de cambiar al modo de usuario avanzado desde dentro de un script, y luego llamar a intp.interpret.

¿Hay alguna manera de hacer este cambio desde dentro de un archivo de script?

+1

En realidad me pareció una solución fea: Usted puede escribir ': power' en un archivo (llamémoslo 'init') y luego ejecute el intérprete scala solo. Luego, haga ': cargar init' (que lo cambiará al modo de encendido) y luego desde el mismo mensaje': cargar programa' para ejecutar el programa que quiere interpretar la cadena. La variable 'intp' ahora debería estar visible. Sin embargo, me gustaría recibir más soluciones bonitas :-) –

Respuesta

1

Si está invocando la REPL de una escritura del golpe o algo por el estilo, entonces puede permitir :power modo inmediato a través de la propiedad scala.repl.power sistema,

[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

No. Intenté eso pero no funciona (con la versión 2.9.2 también en mi máquina). Si ejecuta scala -Dscala.repl.power, entonces funcionará (aunque hay cierto retraso entre la carga del intérprete y la habilitación del modo de encendido), sin embargo, si ejecuta el archivo de comandos scala -Dscala.repl.power, entonces no funciona. . El intérprete se queja de que no se encuentra value intp. –

Cuestiones relacionadas