2012-01-18 15 views
14

में छोड़ने की अनुमति देगा मुझे यकीन नहीं है कि कोड कैसे लिखना है जो स्केल 2.9 कोड में एक दुभाषिया में छोड़ने की अनुमति देगा। यह सवाल this one को एक अनुवर्ती है, जो उनसे पूछा गया कि की स्काला बराबर,स्कैला 2.9 कोड कैसे लिखें जो एक दुभाषिया

import pdb 
pdb.set_trace() 

अजगर से किया गया है। मुख्य रूप से स्कैला 2.8 के लिए दी गई सलाह थी, और संबंधित पैकेज अब उनके पिछले रूप में मौजूद नहीं हैं। अर्थात्,

  1. scala.nsc.tools.nsc.Interpreter.{break, breakIf} के रूप में मूल पोस्ट में उल्लेख किया scala.tools.nsc.interpreter

में scala.nsc.tools.nsc.interpreter.ILoop.{break, breakIf}

  • DebugParam ले जाया गया है अब NamedParam है, माता पिता की प्रक्रिया के वर्ग मार्ग है स्वचालित रूप से नए दुभाषिया को पास नहीं किया गया, इसलिए एक कार्यवाही here प्रस्तुत की गई थी। दुर्भाग्यवश, वहां शामिल कई कक्षाओं/विधियों में अब बदलाव आया है, और मुझे पूरा यकीन नहीं है कि व्यवहार को "अपेक्षित" के रूप में कैसे संशोधित किया जाए।

    धन्यवाद!

    संपादित करें: यहाँ अपने परीक्षण कोड है, जो वर्तमान compiles और रन पर लेकिन आवेदन ठंड अगर 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 का प्रयास कर रहा है: के रूप में मेरा वर्तमान सेटअप एसबीटी के माध्यम से चल रहा है, मैंने पाया है कि यह विषय in the FAQ (पृष्ठ के नीचे) को कवर किया गया है। हालांकि, मुझे दिए गए स्पष्टीकरण को समझ में नहीं आता है, और MyType पर कोई स्पष्टीकरण अमूल्य होगा।

    EDIT3: http://permalink.gmane.org/gmane.comp.lang.scala.simple-build-tool/1622

  • +0

    मैं भी आज रात इस आई है। यहां तक ​​कि: ऑब्जेक्ट मुख्य ऐप बढ़ाता है {scala.tools.nsc.interpreter.ILoop.breakIf (true)} लटका होगा। – arya

    उत्तर

    4

    तो मैं जानता हूँ कि यह एक पुराने सवाल है, लेकिन अगर आपके आरईपीएल व्यतीत कर रहा है, मुझे आश्चर्य है अगर समस्या यह है कि you need to supply the -Yrepl-sync option है: एक समाधान के बिना विषय पर एक और चर्चा? जब मेरा एम्बेडेड आरईपीएल इसी तरह की स्थिति में लटक रहा था, तो उसने इसे मेरे लिए हल किया।

    बजाय breakIf का उपयोग कर आप work with the ILoop directly करने की आवश्यकता होगी ताकि आप Settings वस्तु का उपयोग कर सकते की एक एम्बेडेड आरईपीएल में -Yrepl-sync सेट करने के लिए:

    // 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

    यह समाधान वास्तव में उस समस्या के लिए मेरे लिए काम करता था जो ओपी था। आप इस तरह अपना खुद का 'ब्रेक' और 'ब्रेक' भी लिख सकते हैं। –

    संबंधित मुद्दे