我读到这里如何使用breakIf
在交互式调试的REPL代码的方法,但后来我发现这个帖子说, break
和breakIf
从取出ILoop
在斯卡拉2.10。 不幸的是,文章没有解释为什么该代码已被删除。
我假设这些功能被拆除,因为有这样做的更好的方法。 如果是这样的话,可能会有人告诉我吗?
我读到这里如何使用breakIf
在交互式调试的REPL代码的方法,但后来我发现这个帖子说, break
和breakIf
从取出ILoop
在斯卡拉2.10。 不幸的是,文章没有解释为什么该代码已被删除。
我假设这些功能被拆除,因为有这样做的更好的方法。 如果是这样的话,可能会有人告诉我吗?
也许这个想法是,你应该只与工作ILoop
直接? 据我所知,它不应该是比要复杂得多:
// 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()
相比老breakIf
API,这种方法得到消除额外的间接水平的同时为if
条件(将其缠绕成=> Boolean
)和DebugParam
/ NamedParam
(这是仅用于填充在临时包装bind
参数)。
这种方法还允许您指定Settings
需要。 例如, 一些REPL错误可以工作周围-Yrepl-sync
,但break
给了你没有指定的方式 。