हाँ, आप कर सकते हैं, स्काला 2.8 पर। ध्यान दें कि, इस काम के लिए, आपको अपने क्लासपाथ में scala-compiler.jar को शामिल करना होगा। यदि आप अपने स्कैला कार्यक्रम को लागू करते हैं scala
, तो यह स्वचालित रूप से किया जाएगा (या इसलिए यह मेरे द्वारा किए गए परीक्षणों में लगता है)।
आप इसे इस तरह उपयोग कर सकते हैं:
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)
}
}
}
आप कई DebugParam
तर्क पारित कर सकते हैं । जब REPL आता है, तो दाईं ओर का मान एक वैल से बंध जाएगा, जिसका नाम आपने बाईं ओर दिया है। उदाहरण के लिए, अगर मैं उस लाइन को इस तरह बदलता हूं:
breakIf(i == 5, DebugParam("j", i))
फिर अमल इस तरह होगा:
C:\Users\Daniel\Documents\Scala\Programas>scala TestDebugger
0
1
2
3
4
j: Int
scala> j
res0: Int = 5
आप टाइप करके निष्पादन जारी रखें :quit
।
आप अनौपचारिक रूप से REPL में ड्रॉप कर सकते हैं break
, जो कि vargg List
के DebugParam
बजाय प्राप्त होता है । यहाँ एक पूर्ण उदाहरण, कोड और निष्पादन है:
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)
}
}
}
और तब:
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>