2011-05-19 17 views
6

स्कैला नौसिखिया पर स्केल ने सीमित निरंतरता त्रुटि, मैंने अभी ग्रहण 3.6.2 और Scala IDE 2.0.0-बीटा 4 (स्कैला 2.9.0. फ़ाइनल के साथ) डाउनलोड किया है। मैं सीमांकित निरंतरता की कोशिश करने के लिए एक नया स्काला परियोजना बनाने:स्कैला रनटाइम

package delimCCTests 

import scala.util.continuations._ 

object Test extends App { 
    val result = reset { 
    1 + shift { k: (Int => Int) => k(k(5)) } + 1 
    } 
    println(result) 
} 

यह ठीक संकलित, तो मैं के रूप में चलाएं पर क्लिक करें -> स्काला आवेदन और इस अपवाद प्राप्त करें:

Exception in thread "main" java.lang.NoSuchMethodError: scala.util.continuations.package$.shift(Lscala/Function1;)Ljava/lang/Object; 
    at delimCCTests.Test$$anonfun$1.apply$mcI$sp(DelimCCTests.scala:7) 
    at delimCCTests.Test$$anonfun$1.apply(DelimCCTests.scala:7) 
    at delimCCTests.Test$$anonfun$1.apply(DelimCCTests.scala:7) 
    at scala.util.continuations.package$.reset(package.scala:20) 
    at delimCCTests.Test$delayedInit$body.apply(DelimCCTests.scala:6) 
    at scala.Function0$class.apply$mcV$sp(Function0.scala:34) 
    at scala.runtime.AbstractFunction0.apply$mcV$sp(AbstractFunction0.scala:12) 
    at scala.App$$anonfun$main$1.apply(App.scala:60) 
    at scala.App$$anonfun$main$1.apply(App.scala:60) 
    at scala.collection.LinearSeqOptimized$class.foreach(LinearSeqOptimized.scala:59) 
    at scala.collection.immutable.List.foreach(List.scala:45) 
    at scala.collection.generic.TraversableForwarder$class.foreach(TraversableForwarder.scala:30) 
    at scala.App$class.main(App.scala:60) 
    at delimCCTests.Test$.main(DelimCCTests.scala:5) 
    at delimCCTests.Test.main(DelimCCTests.scala) 

क्या मैं गलत कर रहा हूँ? क्या मुझे कुछ विन्यास याद आ रही है?

बीटीडब्ल्यू मैंने सोचा कि संकलक निरंतरता के प्रकार का अनुमान लगाता है? This article उपयोग करता है:

val result = reset { 
    1 + shift { k => k(k(5)) } + 1     
} 

लेकिन यह मेरी वातावरण में संकलन नहीं करता है ...

+0

तो क्या सह के बीच में परिवर्तन होता है किया जाना चाहिए mpile पर्यावरण और रन-टाइम पर्यावरण? :-) मेरा पहला संदिग्ध एक विरोधाभासी (अप्रत्याशित और अलग) स्कैला रन-टाइम लाइब्रेरी का उपयोग किया जा रहा है। –

+0

@pst: यह निश्चित रूप से ऐसा लगता है, लेकिन मेरे पास पहले कभी इस बॉक्स में स्कैला नहीं था, इसलिए यह संस्करण विसंगति नहीं हो सकता है, है ना? –

+0

विंडोज 7 64-बिट पर समान परिणाम (स्कैला संस्करण 2.9.0. फ़ाइनल (जावा हॉटस्पॉट (टीएम) 64-बिट सर्वर वीएम, जावा 1.6.0_25) के साथ इस कोड को आरपीएल पर आजमाएं) –

उत्तर

3

इस त्रुटि का अर्थ है कि आप स्काला सीपीएस प्लगइन में नहीं जोड़ा था - यह एक मानक विधानसभा का एक हिस्सा नहीं है (अब तक)। classpath पर the jar रखो, और चलाने के स्काला का अनुसरण करता है, क्रम में निरंतरता के लिए सक्षम होना चाहिए:

$ scala -P:continuations:enable 
+0

नहीं, मैंने http://stackoverflow.com/questions/4556540/continuations-in-scala-2-8-1-and-eclipse/4557174#comment-7005822 में समझाया गया है और मुझे संकलन-समय त्रुटि मिलती है: "खराब विकल्प: -पी: निरंतरता: सक्षम करें" –

+0

इसके अलावा, इसे 'रीसेट' कैसे मिलता है लेकिन 'shift' नहीं? –

+1

"खराब विकल्प: -पी: निरंतरता: सक्षम करें" - इस त्रुटि का अर्थ है कि आपके पास क्लासपाथ –

1

यह स्काला संकलक> उन्नत अनुभाग पर सीपीएस प्लगइन्स वर्ग को जोड़ने के साथ-साथ सक्षम करने से ग्रहण में हल किया जा सकता स्विच:

Enabling the continuations switch Adding the plugin and setting the plugins path Xpluginscala.tools.selectivecps.SelectiveCPSPlugin होना चाहिए और Xpluginsdir dir जो org.scala-lang.plugins.scala-continuations-plugin.jar