Scala - инициализация среды REPL
-Привет. Я хочу добавить Scala REPL сinitialized environment в мое приложение. Я смотрел наIMain
класс, и, кажется, я мог бы сделать это через экземпляр этого. Экземпляр создается и затем сохраняется вintp
публичный вар вprocess()
изILoop
.
Как я могу связать некоторые имена и / или добавить некоторые импорта доprocess()
(например, до REPL)?
Следующий код не выполняется в строке 3, потому чтоintp
еще не создан (=> NPE):
val x = 3
val interp = new ILoop
interp.bind("x", x) // -> interp.intp.bind("x", x)
val settings = new Settings
settings.usejavacp.value = true
interp.process(settings)
Спасибо-.
ОБНОВЛЕНИЕ: переопределениеcreateInterpreter()
к сожалению, это не работает:
val x = 3
val interp = new ILoop {
override def createInterpreter() {
super.createInterpreter()
intp.bind("x", x) // -> interp.intp.bind("x", x)
}
}
val settings = new Settings
settings.usejavacp.value = true
interp.process(settings)
Интерпретатор застревает на входе (выглядит как тупик, происходит только с кодом выше):
x: Int = 3
Failed to created JLineReader: java.lang.NoClassDefFoundError: scala/tools/jline/console/completer/Completer
Falling back to SimpleReader.
Welcome to Scala version 2.9.2 (OpenJDK 64-Bit Server VM, Java 1.7.0_06-icedtea).
Type in expressions to have them evaluated.
Type :help for more information.
scala> println
<infinite_sleep>
Спасибо двигал за предложение.