2012-01-18 9 views
14

Scala 2.9 koduna bir yorumlayıcıya bırakılmasına izin verecek kodun nasıl yazılacağından emin değilim. Bu soru Scala eşdeğerBir çevirmene bırakmayı sağlayacak Scala 2.9 kodu nasıl yazılır

import pdb 
pdb.set_trace() 

Python ne olduğunu sordu this one için bir takip vardır. Orada verilen tavsiyeler öncelikle Scala 2.8 için yapılmıştı ve ilgili paketler artık önceki formlarında mevcut değil. Şöyle ki,

, ebeveyn sürecinin sınıf yolu orijinal sonrası belirtildiği gibi
  • scala.nsc.tools.nsc.Interpreter.{break, breakIf} scala.tools.nsc.interpreter
  • şimdi NamedParamscala.nsc.tools.nsc.interpreter.ILoop.{break, breakIf}

  • DebugParam etmektir taşındı olduğunu
      Yeni tercümana otomatik olarak geçilmediğinden, bir geçici çözüm here sunulmuştur. Ne yazık ki, orada başlatılan sınıfların/yöntemlerin birçoğu şimdi değişti ve kodun "beklenen" olarak nasıl davranılacağını tam olarak bilmiyorum.

      Teşekkürler!

      DÜZENLEME: gibi: İşte benim test kodu, cari derlemesinin ve ishal, en ama 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 tarafından scalac tarafından derlenen ve idam eğer donma uygulamada ayıklayıcı sonuçlarında şey çalıştırma girişiminde olduğunu şu anki kurulumum sbt ile çalışıyor, bu konunun in the FAQ (sayfanın altında) olduğunu öğrendim. Ancak, verilen açıklamayı anlamıyorum ve MyType'daki herhangi bir açıklama çok değerli olacaktır.

      EDIT3:

  • +0

    . Çift: Nesne Ana uzantıları App {scala.tools.nsc.interpreter.ILoop.breakIf (true)} asılacak. – arya

    cevap

    4

    http://permalink.gmane.org/gmane.comp.lang.scala.simple-build-tool/1622 Yani bu eski soru olacak ama REPL asılı olup olmadığını sorun you need to supply the -Yrepl-sync option olduğunu ise acaba: çözümsüz konu üzerinde başka bir tartışma? Gömülü REPL'm benzer bir durumda asılı kaldığında, bu benim için çözdü.

    yerine böylece Settings nesneye erişebilen work with the ILoop directly gerekir breakIf kullanmak yerine, gömülü bir repl içinde -Yrepl-sync ayarlamak için: Ben de bu işe bu gece koşuyoruz

    // create the ILoop 
    val repl = new ILoop 
    repl.settings = new Settings 
    repl.in = SimpleReader() 
    
    // set the "-Yrepl-sync" option 
    repl.settings.Yreplsync.value = true 
    
    // start the interpreter and then close it after you :quit 
    repl.createInterpreter() 
    repl.loop() 
    repl.closeInterpreter() 
    
    +0

    Bu çözüm, OP'nin sahip olduğu problem için gerçekten benim için çalıştı. Hatta kendi "break" ve "breakIf" kelimelerini bu şekilde yazabilirsiniz. –