2010-04-19 9 views
7

निम्न वर्ग जो सीपीएस-संदर्भ (@ सीपीएस [यूनिट]) में है, मैं सीईसी-विशेषता को कैसे कार्यान्वित करूं? क्या मुझे सीईसी अलग-अलग मानक गुणों को छोड़ना है और सीपीएस-संदर्भ में मानचित्र, फ्लैटमैप और फोरैच लागू करना है?सीपीएस-कक्षाओं के लिए सीईसी [टी] लागू करना

class DataFlowVariable[T] { 
    def apply(): T @cps[Unit] = ... 
} 

class DataFlowStream[T] extends Seq[T] { 

    override def iterator: Iterator[T] = new Iterator[T] { 
    private val iter = queue.iterator 
    def hasNext: Boolean = iter.hasNext 
    def next: T = { // needed: next: T @cps[Unit] ! 
     val dfvar = iter.next 
     // dfvar() // not possible as dvar.apply has type "T @cps[Unit]" 
    } 
    } 
} 
+0

क्या मेरा प्रश्न बहुत गुप्त है? इसे समेकित करने के लिए: चूंकि सीपीएस-संदर्भ में काम करने वाले सभी कार्यों को सीपीएस [एक्स] के साथ एनोटेटेड प्रकार को वापस करने की आवश्यकता है, इसलिए मैं सीईसी जैसे किसी भी मानक लक्षण/इंटरफेस को लागू करने में सक्षम नहीं हूं क्योंकि उनके हस्ताक्षर में इन @ सीपीएस-एनोटेशन की कमी है। क्या ये सही है? – hotzen

उत्तर

1

ठीक है, जहाँ तक मुझे मिल गया यह इंटरफेस को लागू करने लगता है/Seq की तरह लक्षण नहीं संभव है। हालांकि स्कैला सामान्य foreach/map-call में for सिंटैक्टिक-चीनी-लूप को फिर से लिखता है, यह आवश्यक सीपीएस-एनोटेशन के साथ map और foreach को लागू करने के लिए बहुत अच्छा काम करता है। फ़िल्टर & सह भी काम करना चाहिए।

हालांकि सीपीएस-संदर्भ में लक्षणों को कार्यान्वित करने के बारे में कोई सलाह बहुत सराहना की जाती है।