Как сохранить сеанс REPL?

можно ли сохранить сеанс REPL в файле? Есть ли минимальная версия Scala, требуемая для этого? Я помню, что видел, как кто-то это сделал, но я не могу это исправить :помощь или в документации.

2 ответов


это возможно с Scala 2.11. Пример использования:

scala> 1
res0: Int = 1

scala> 2
res1: Int = 2

scala> 3
res2: Int = 3

scala> :save xxx

scala> :load xxx
Loading xxx...
res3: Int = 1
res4: Int = 2
res5: Int = 3

вы можете :reset до :load чтобы получить правильные ссылки на результаты:

scala> 1
res0: Int = 1

scala> res0 + 1
res1: Int = 2

scala> :save xxx

позже в тот день...

scala> 7
res0: Int = 7

scala> :reset
Resetting interpreter state.
Forgetting this session history:

7

Forgetting all expression results and named terms: $intp

scala> :load xxx
Loading xxx...
res0: Int = 1
res1: Int = 2

обратите внимание, что у вас есть в дополнение к родному Scala REPL проект Shell-scripting Аммонит, которая имеет сохранить / Loadd функция сеанса:

помимо простых сохранений и нагрузок, которые просто отбрасывают все после последнего сохранения, вы также можете предоставить имя этим функциям.
Это позволяет вам перестать работать над веткой, сделать что-то еще на некоторое время и вернуться позже, чтобы продолжить где вы остановились:

@ val (x, y) = (1, 2)
x: Int = 1
y: Int = 2

@ sess.save("xy initialized")

@ val z = x + y
z: Int = 3

@ sess.save("first z")

@ sess.load("xy initialized")

@ val z = x - y
z: Int = -1