我不确定如何编写代码,以允许在Scala 2.9代码中插入解释器。这个问题是这个问题的后续,该问题询问了以下内容的Scala等效方式:
EDIT2: 由于我的当前设置是通过sbt运行的,我发现这个主题在常见问题解答中有在页面底部涉及。然而,我不理解给出的解释,并且任何关于
EDIT3: 另一个讨论该主题但没有解决方案:http://permalink.gmane.org/gmane.comp.lang.scala.simple-build-tool/1622
import pdb
pdb.set_trace()
这段代码是关于Python的。原帖中给出的建议主要是针对Scala 2.8的,相关的包已不再以原来的形式存在。具体而言:
scala.nsc.tools.nsc.Interpreter.{break, breakIf}
已移至scala.nsc.tools.nsc.interpreter.ILoop.{break, breakIf}
DebugParam
现在在scala.tools.nsc.interpreter
中被称为NamedParam
正如原帖所述,父进程的类路径不会自动传递到新的解释器中,因此提供了一种解决方法here。不幸的是,许多在那里调用的类/方法现在已经发生了变化,我不太确定如何修改代码以使其按照“预期”的方式运行。
谢谢!
编辑:这是我的测试代码,目前可以编译和运行,但如果使用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 == 5)
}
}
}
EDIT2: 由于我的当前设置是通过sbt运行的,我发现这个主题在常见问题解答中有在页面底部涉及。然而,我不理解给出的解释,并且任何关于
MyType
的澄清都将是宝贵的。EDIT3: 另一个讨论该主题但没有解决方案:http://permalink.gmane.org/gmane.comp.lang.scala.simple-build-tool/1622