如何保存REPL会话?

时间:2014-02-28 20:00:42

标签: scala read-eval-print-loop

是否可以在文件中保存REPL会话?是否有最低版本的Scala需要这样做?我记得曾见过有人这样做,但我不能把它弄好:帮助或文档。

2 个答案:

答案 0 :(得分:14)

从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

答案 1 :(得分:3)

请注意,除了本机Scala REPL之外,还有一个shell脚本项目Ammonite,它有一个Save/Loadd Session feature

  

除了简单的保存和加载,它们只是丢弃最近保存后的所有内容,您还可以为这些功能提供名称。
  这可以让你停止在分支上工作,暂时做一些其他的事情,并能够稍后再回来继续你离开的地方:

@ 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