首页 文章

如何保存REPL会话?

提问于
浏览
10

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

2 回答

  • 12

    从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 获取对结果的正确引用:

    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
    
  • 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
    

相关问题