Oui, vous pouvez, sur Scala 2.8. Notez que, pour que cela fonctionne, vous devez inclure le scala-compiler.jar dans votre chemin de classe. Si vous invoquez votre programme scala avec scala, cela se fera automatiquement (du moins il semble dans les tests que j'ai effectués).
Vous pouvez ensuite l'utiliser comme ceci:
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)
}
}
}
Vous pouvez passer plusieurs DebugParamarguments. Lorsque le REPL apparaît, la valeur à droite sera liée à un val dont vous avez fourni le nom à gauche. Par exemple, si je change cette ligne comme ceci:
breakIf(i == 5, DebugParam("j", i))
Ensuite, l'exécution se déroulera comme ceci:
C:\Users\Daniel\Documents\Scala\Programas>scala TestDebugger
0
1
2
3
4
j: Int
scala> j
res0: Int = 5
Vous continuez l'exécution en tapant :quit.
Vous pouvez également passer inconditionnellement dans REPL en invoquant break, qui reçoit un Listof DebugParamau lieu d'un vararg. Voici un exemple complet, code et exécution:
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)
}
}
}
Puis:
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>