gpt4 book ai didi

debugging - 在任意 scala 代码位置期间放入解释器

转载 作者:行者123 更新时间:2023-12-03 05:11:16 33 4
gpt4 key购买 nike

我有 Python 背景,我可以在代码中的任何位置添加

import pdb; pdb.set_trace()

在运行时,我将在该位置进入交互式解释器。 scala 是否有等效项,或者这在运行时不可能?

最佳答案

是的,在 Scala 2.8 上可以。请注意,要使其工作,您必须在类路径中包含 scala-compiler.jar。如果您使用 scala 调用您的 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 出现时,右侧的值将绑定(bind)到您在左侧提供的名称的 val。例如,如果我像这样更改该行:

      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 继续执行。

您还可以通过调用 break 无条件进入 REPL,它接收 DebugParamList 而不是可变参数。这是完整的示例、代码和执行:

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>

关于debugging - 在任意 scala 代码位置期间放入解释器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2160355/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com