codingground - 在2.10中替代Scala REPL breakIf



scala-2.10 (1)

也許這個想法是你應該直接使用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無法指定它

我在here閱讀有關在REPL代碼中使用breakIf方法進行交互式調試的信息,但後來我發現這篇帖子說在scala 2.10中從ILoop中刪除了breakbreakIf 。 不幸的是,該帖子並未解釋為何刪除了代碼。

我假設刪除了這些函數,因為有更好的方法可以做到這一點。 如果是這樣的話,有人可以賜教我嗎?





scala-2.10