Tak, możesz na Scali 2.8. Zauważ, że aby to zadziałało, musisz dołączyć plik scala-compiler.jar do swojej ścieżki klas. Jeśli wywołasz swój program scala za pomocą scala
, zostanie to zrobione automatycznie (a przynajmniej tak się wydaje w testach, które przeprowadziłem).
Następnie możesz go użyć w następujący sposób:
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)
}
}
}
Możesz przekazać wiele DebugParam
argumentów. Kiedy pojawi się REPL, wartość po prawej stronie zostanie powiązana z wartością, której nazwę podałeś po lewej stronie. Na przykład, jeśli zmienię tę linię w ten sposób:
breakIf(i == 5, DebugParam("j", i))
Wtedy wykonanie nastąpi tak:
C:\Users\Daniel\Documents\Scala\Programas>scala TestDebugger
0
1
2
3
4
j: Int
scala> j
res0: Int = 5
Kontynuujesz wykonanie, wpisując :quit
.
Możesz także bezwarunkowo przejść do REPL przez wywołanie break
, które otrzymuje List
of DebugParam
zamiast vararg. Oto pełny przykład, kod i wykonanie:
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)
}
}
}
I wtedy:
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>