2011-03-27 3 views
6

कमजोर संदर्भों के रूप में कमजोर। असल में, मुझे संख्याओं का अनुक्रम चाहिए जहां उनमें से कुछ को तब तक आवंटित किया जा सकता है जब उनकी आवश्यकता नहीं होती है।क्या कोई डेटा संरचना स्ट्रीम की तरह है, लेकिन कमजोर है?

+4

आप खुशी है कि आप एक कमजोर धारा की जरूरत नहीं है (क्षमा करें, विरोध नहीं कर सकते हैं) होना चाहिए –

+0

http://stackoverflow.com/questions/4132924/functional-processing- ऑफ-स्कैला-स्ट्रीम-बिना-आउटफमेमरी-त्रुटियों –

+0

@ स्विस क्षमा करें, जब मैंने खोज की थी तो कुछ भी नहीं मिला ... अच्छा, कभी-कभी ऐसा होता है, है ना? – Anonymous

उत्तर

5

scalaz.EphemeralStream आप क्या चाहते हैं।

0

व्यू आपको एक आलसी संग्रह प्रदान करते हैं, जहां प्रत्येक मान की गणना की जाती है।

+0

सीखने के प्रयोजनों के लिए, क्या यह उत्तर गलत था? – Bradford

+0

हां। मेरे पास पहले से आलसी संग्रह (स्ट्रीम) है, लेकिन मुझे इसे कमजोर होने की भी आवश्यकता है। – Anonymous

+0

प्रश्न का पूरा बिंदु ... गेटचा! धन्यवाद। इन टिप्पणियों को देखने के लिए मैं दूसरों के लिए अपना उत्तर यहां छोड़ दूंगा। क्या कोई शायद समझा सकता है कि विचार कमज़ोर क्यों नहीं हैं? – Bradford

0

एक चीज जो आप कर सकते हैं के बजाय Iterable बना सकते हैं। आपके Iterable को iterator विधि प्रदान करने की आवश्यकता है, जो hasNext और next विधियों के साथ एक पुनरावर्तक देता है।

जब आप अधिक पाश Iterable, hasNext और next के रूप में वे की जरूरत है तत्व उत्पन्न करने के लिए कहा जाएगा, लेकिन वे कहीं भी संग्रहीत नहीं हैं (जैसे एक Stream करता है)।

सरल उदाहरण:

class Numbers extends Iterable[Int] { 
    def iterator = new Iterator[Int] { 
    private var num = -1 

    def hasNext = num < 99 
    def next = { num += 1; num } 
    } 
} 
+0

इससे ज्यादा मदद नहीं मिलेगी, क्योंकि मुझे दो कारणों से स्ट्रीम की आवश्यकता है: कार्यात्मक प्रोग्रामिंग (= इटेटरेटर) और ज्ञापन (पुनरावृत्तियों नहीं)। – Anonymous

+0

@ अनामित - ध्यान दें कि 'Iterable' में सबसे अधिक स्कैला संग्रह विधियां हैं (जिनमें' foreach', 'map',' filter', 'foldLeft' आदि शामिल हैं) ताकि आप इसे किसी भी अन्य संग्रह की तरह func प्रोग्रामिंग के लिए उपयोग कर सकें, और यादें: मैंने सोचा था कि आप ऐसा कुछ चाहते हैं जो * जेनरेट किए गए मानों को बनाए रखे? – Jesper

+0

इसे बनाए रखना चाहिए, केवल स्थायी नहीं। देखो (मुझे लगता है) java.lang.ref.WeakReference। – Anonymous

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