我来自Python背景,我可以添加代码中的任何位置
import pdb; pdb.set_trace()
Run Code Online (Sandbox Code Playgroud)
并且在运行时我将被放入该位置的交互式解释器中.是否有scala的等价物,或者这在运行时是不可能的?
我不知道如何编写允许将解释器放入Scala 2.9代码的代码.这个问题是一个后续这一块,这要求斯卡拉相当于什么,
import pdb
pdb.set_trace()
Run Code Online (Sandbox Code Playgroud)
来自Python.那里给出的建议主要是针对Scala 2.8,相关的包不再存在于以前的形式中.也就是说,
scala.nsc.tools.nsc.Interpreter.{break, breakIf} 已被转移到 scala.nsc.tools.nsc.interpreter.ILoop.{break, breakIf}DebugParam现在NamedParam在scala.tools.nsc.interpreter中正如原始帖子中所述,父进程的类路径不会自动传递给新的解释器,因此这里提供了一种解决方法.不幸的是,那里调用的许多类/方法现在已经改变了,我不太确定如何修改代码表现为"预期".
谢谢!
编辑:这是我的测试代码,在当前编译和运行,但尝试在调试器中执行任何操作导致应用程序冻结,如果编译scalac和执行scala
import scala.tools.nsc.interpreter.ILoop._
object Main extends App {
case class C(a: Int, b: Double, c: String) {
def throwAFit(): Unit = {
println("But I don't wanna!!!")
}
}
// main
override def main(args: Array[String]): Unit = {
val c = C(1, 2.0, "davis")
0.until(10).foreach {
i =>
println("i = " + i)
breakIf(i …Run Code Online (Sandbox Code Playgroud)