Ja, Sie können auf Scala 2.8. Beachten Sie, dass Sie die Datei scala-compiler.jar in Ihren Klassenpfad aufnehmen müssen, damit dies funktioniert. Wenn Sie Ihr Scala-Programm mit aufrufen scala
, wird dies automatisch durchgeführt (so scheint es in den von mir durchgeführten Tests).
Sie können es dann folgendermaßen verwenden:
import scala.tools.nsc.Interpreter._
object TestDebugger {
def main(args: Array[String]) {
0 to 10 foreach { i =>
breakIf(i == 5, DebugParam("i", i))
println(i)
}
}
}
Sie können mehrere DebugParam
Argumente übergeben. Wenn die REPL angezeigt wird, wird der Wert rechts an einen Wert gebunden, dessen Namen Sie links angegeben haben. Wenn ich zum Beispiel diese Zeile wie folgt ändere:
breakIf(i == 5, DebugParam("j", i))
Dann erfolgt die Ausführung folgendermaßen:
C:\Users\Daniel\Documents\Scala\Programas>scala TestDebugger
0
1
2
3
4
j: Int
scala> j
res0: Int = 5
Sie setzen die Ausführung durch Eingabe fort :quit
.
Sie können auch in REPL fallen bedingungslos durch den Aufruf break
, das ein empfängt List
von DebugParam
anstelle eines Vararg. Hier ist ein vollständiges Beispiel, Code und Ausführung:
import scala.tools.nsc.Interpreter._
object TestDebugger {
def main(args: Array[String]) {
0 to 10 foreach { i =>
breakIf(i == 5, DebugParam("j", i))
println(i)
if (i == 7) break(Nil)
}
}
}
Und dann:
C:\Users\Daniel\Documents\Scala\Programas>scalac TestDebugger.scala
C:\Users\Daniel\Documents\Scala\Programas>scala TestDebugger
0
1
2
3
4
j: Int
scala> j
res0: Int = 5
scala> :quit
5
6
7
scala> j
<console>:5: error: not found: value j
j
^
scala> :quit
8
9
10
C:\Users\Daniel\Documents\Scala\Programas>