Alternative to Scala REPL breakIf in 2.10

后端 未结 1 889
长发绾君心
长发绾君心 2021-02-01 02:16

I was reading here about using the breakIf method in the REPL code for interactive debugging, but then I found this post saying that break and br

1条回答
  •  再見小時候
    2021-02-01 03:11

    Perhaps the idea is that you should just work with the ILoop directly? As far as I can tell, it shouldn't be much more complex than:

    // insert the code below wherever you want a REPL
    val repl = new ILoop
    repl.settings = new Settings
    repl.in = SimpleReader()
    repl.createInterpreter()
    
    // bind any local variables that you want to have access to
    repl.intp.bind("i", "Int", i)
    repl.intp.bind("e", "Exception", e)
    
    // start the interpreter and then close it after you :quit
    repl.loop()
    repl.closeInterpreter()
    

    Compared to the old breakIf API, this approach gets rid of an additional level of indirection for both the if condition (which was wrapped into a => Boolean) and the DebugParam/NamedParam (which were temporary wrappers used only to fill in the bind arguments).

    This approach also allows you to specify your Settings as needed. For example, some REPL bugs can be worked around with -Yrepl-sync but break gave you no way of specifying that.

    0 讨论(0)
提交回复
热议问题