Nie jestem pewien, jak napisać kod, który pozwoli wpaść na tłumacza do Scala 2.9 kodu. To pytanie jest kontynuacją this one, który zapytał, co stanowi równowartość Scala,Jak napisać kod Scala 2.9, który pozwoli wpaść na tłumacza
import pdb
pdb.set_trace()
był od Pythona. Porada udzielona tam była głównie dla Scala 2.8, a powiązane pakiety nie istnieją już w ich poprzedniej formie. Mianowicie
scala.nsc.tools.nsc.Interpreter.{break, breakIf}
zostały przeniesione doscala.nsc.tools.nsc.interpreter.ILoop.{break, breakIf}
DebugParam
jest terazNamedParam
w scala.tools.nsc.interpreter
Jak podano w pierwotnym post, ścieżka klasy procesu macierzystego jest nie został automatycznie przekazany do nowego interpretera, dlatego przedstawiono obejście tego problemu: here. Niestety, wiele przywoływanych tam klas/metod zmieniło się i nie jestem do końca pewien, jak zmodyfikować kod, który będzie się zachowywał "oczekiwany".
Dzięki!
EDIT: Oto mój kod testowy, który przy obecnych kompiluje się i działa, ale stara się wykonać coś w wynikach debugera w stosowaniu zamrożenia jeśli skompilowany przez scalac
i wykonywane przez 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: Jak moja obecna konfiguracja działa przez sbt, odkryłem, że ten temat jest objęty in the FAQ (u dołu strony). Jednak nie rozumiem tego wyjaśnienia, a wszelkie wyjaśnienia na temat MyType
byłyby nieocenione.
Edit3: kolejna dyskusja na ten temat bez rozwiązania: http://permalink.gmane.org/gmane.comp.lang.scala.simple-build-tool/1622
Zabrakło mi do tego jak dobrze dzisiaj. Even: object Main extends App {scala.tools.nsc.interpreter.ILoop.breakIf (true)} zawiesi się. – arya