Alternativa a Scala REPL breakSi en 2.10
scala-2.10 (1)
Estaba leyendo here sobre el uso del método breakIf
en el código REPL para la depuración interactiva, pero luego encontré esta publicación que decía que break
y breakIf
se eliminaron de ILoop
en Scala 2.10. Lamentablemente, esa publicación no explica por qué se eliminó el código.
Supongo que estas funciones se eliminaron porque hay una mejor manera de hacerlo. Si ese es el caso, ¿podría alguien por favor iluminarme?
¿Tal vez la idea es que solo debes trabajar con ILoop
directamente? Por lo que puedo decir, no debería ser mucho más complejo que:
// 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()
Comparado con la antigua API breakIf
, este enfoque elimina un nivel adicional de breakIf
indirecto tanto para la condición if
(que estaba envuelta en a => Boolean
) como para DebugParam
/ NamedParam
(que eran envoltorios temporales utilizados solo para completar los argumentos de NamedParam
)
Este enfoque también le permite especificar su Settings
según sea necesario. Por ejemplo, algunos errores REPL se pueden -Yrepl-sync
con -Yrepl-sync
pero el break
no le dio ninguna forma de especificar eso .