Подтвердить что ты не робот

Альтернатива Scala REPL breakIf в 2.10

Я читал здесь об использовании метода breakIf в коде REPL для интерактивной отладки, но затем я нашел этот пост, говорящий, что break и breakIf были удалены из ILoop в Scala 2.10. К сожалению, этот пост не объясняет, почему код был удален.

Я предполагаю, что эти функции были удалены, потому что есть лучший способ сделать это. Если это случай, может кто-нибудь, пожалуйста, просветить меня?

4b9b3361

Ответ 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()

По сравнению со старым API breakIf, этот подход избавляется от дополнительного уровня косвенности как для условия if (которое было завернуто в => Boolean), так и в DebugParam/NamedParam (которое были временными оболочками, используемыми только для заполнения аргументов bind).

Этот подход также позволяет вам указать ваш Settings по мере необходимости. Например, некоторые ошибки REPL можно обрабатывать с помощью -Yrepl-sync, но break не дал вам никаких указаний на это.