35

インタラクティブなデバッグのために REPL コードでメソッドを使用することについてここで読んでいましたが、Scala 2.10 で削除されたと言っているこの投稿を見つけました。残念ながら、その投稿にはコードが削除された理由が説明されていません。breakIfbreakbreakIfILoop

これを行うためのより良い方法があるため、これらの機能は削除されたと思います。もしそうなら、誰かが私を啓発してもらえますか?

4

1 に答える 1

6

おそらく、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()

古い API と比較すると、このアプローチでは、条件 ( にラップされていた) と/ (引数を埋めるためだけに使用される一時的なラッパー)breakIfの両方に対する間接的な追加レベルが取り除かれます。if=> BooleanDebugParamNamedParambind

このアプローチでは、必要に応じてを指定することもできますSettings。たとえば、一部の REPL バグは回避できますが、-Yrepl-syncそれbreakを指定する方法がありません

于 2012-11-06T11:44:28.663 に答える