No estoy seguro de cómo escribir código que permita incluir un intérprete en el código de Scala 2.9. Esta pregunta es un seguimiento de this one, que le preguntó cuál es el equivalente de la Scala,Cómo escribir el código de Scala 2.9 que permitirá el acceso a un intérprete
import pdb
pdb.set_trace()
era de Python. El consejo dado allí fue principalmente para Scala 2.8, y los paquetes relacionados ya no existen en su forma anterior. A saber,
scala.nsc.tools.nsc.Interpreter.{break, breakIf}
han sido trasladados ascala.nsc.tools.nsc.interpreter.ILoop.{break, breakIf}
DebugParam
está ahora enNamedParam
scala.tools.nsc.interpreter
Como se señaló en el post original, la ruta de clase del proceso padre es no se pasó automáticamente al nuevo intérprete, por lo que se presentó una solución alternativa here. Desafortunadamente, muchas de las clases/métodos invocados allí ahora han cambiado, y no estoy muy seguro de cómo modificar el código para que se comporte como "esperado".
Gracias!
EDIT: Aquí está mi código de prueba, que al compilar y ejecutar actuales, pero intentar ejecutar cualquier cosa en los resultados del depurador en la aplicación de congelación si compilado por scalac
y ejecutado por scala
import scala.tools.nsc.interpreter.ILoop._
object Main extends App {
case class C(a: Int, b: Double, c: String) {
def throwAFit(): Unit = {
println("But I don't wanna!!!")
}
}
// main
override def main(args: Array[String]): Unit = {
val c = C(1, 2.0, "davis")
0.until(10).foreach {
i =>
println("i = " + i)
breakIf(i == 5)
}
}
}
Edit2: Como mi configuración actual se está ejecutando a través de sbt, he descubierto que este tema está cubierto in the FAQ (parte inferior de la página). Sin embargo, no entiendo la explicación dada, y cualquier aclaración en MyType
sería invaluable.
Edit3: otra discusión sobre el tema sin solución: http://permalink.gmane.org/gmane.comp.lang.scala.simple-build-tool/1622
me he encontrado esto también esta noche. Incluso: el objeto Main extends la aplicación {scala.tools.nsc.interpreter.ILoop.breakIf (true)} se bloqueará. – arya