是否可以在文件中保存REPL会话?是否有最低版本的Scala需要这样做?我记得曾见过有人这样做,但我不能把它弄好:帮助或文档 .
从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
您可以在 :load 之前 :reset 获取对结果的正确引用:
:load
:reset
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脚本项目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
2 回答
从Scala 2.11开始,这是可能的 . 用法示例:
您可以在
:load
之前:reset
获取对结果的正确引用:那天晚些时候...
请注意,除了本机Scala REPL之外,还有一个shell脚本项目Ammonite,它有一个Save/Loadd Session feature: