Tôi không chắc chắn cách viết mã cho phép thả vào trình thông dịch thành mã Scala 2.9. Câu hỏi này là theo dõi tới this one, yêu cầu tương đương Scala là gì,Cách viết mã Scala 2.9 sẽ cho phép rơi vào thông dịch viên
import pdb
pdb.set_trace()
là từ Python. Lời khuyên được đưa ra có chủ yếu cho Scala 2.8, và các gói liên quan không còn tồn tại ở dạng trước của chúng. Cụ thể,
scala.nsc.tools.nsc.Interpreter.{break, breakIf}
đã được chuyển đếnscala.nsc.tools.nsc.interpreter.ILoop.{break, breakIf}
DebugParam
hiệnNamedParam
trong scala.tools.nsc.interpreter
Như đã đề cập trong các bài bản gốc, các đường dẫn lớp của quá trình cha mẹ là không được chuyển tới thông dịch viên mới một cách tự động, do đó giải pháp được trình bày here. Rất tiếc, nhiều lớp/phương thức được gọi hiện đã thay đổi và tôi không chắc chắn cách sửa đổi mã hoạt động như "mong đợi".
Cảm ơn!
EDIT: Đây là mã thử nghiệm của tôi, mà lúc biên dịch hiện tại và chạy, nhưng cố gắng để thực hiện bất cứ điều gì trong các kết quả gỡ lỗi trong ứng dụng đóng băng nếu biên soạn bởi scalac
và thực hiện bởi 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: Như thiết lập hiện tại của tôi đang chạy qua sbt, tôi đã phát hiện ra rằng chủ đề này được che phủ in the FAQ (dưới cùng của trang). Tuy nhiên, tôi không hiểu những lời giải thích được đưa ra, và bất kỳ làm rõ trên MyType
sẽ là vô giá.
EDIT3: một cuộc thảo luận về chủ đề này mà không có một giải pháp: http://permalink.gmane.org/gmane.comp.lang.scala.simple-build-tool/1622
tôi đã chạy vào này là tốt tối nay. Ngay cả: đối tượng Chính mở rộng App {scala.tools.nsc.interpreter.ILoop.breakIf (true)} sẽ bị treo. – arya