अमृत - धाराएँ
कई कार्यों के लिए उम्मीद की जाती है और एक वापसी listवापस। इसका मतलब है, Enum के साथ कई ऑपरेशन करते समय, प्रत्येक ऑपरेशन एक मध्यवर्ती सूची उत्पन्न करने जा रहा है जब तक कि हम परिणाम तक नहीं पहुंच जाते।
धाराएँ आलसियों द्वारा किए गए उत्सुक कार्यों के विपरीत आलसी कार्यों का समर्थन करती हैं। संक्षेप में,streams are lazy, composable enumerables। इसका मतलब यह है कि जब तक यह बिल्कुल आवश्यक नहीं है तब तक स्ट्रीम एक ऑपरेशन नहीं करती है। आइए इसे समझने के लिए एक उदाहरण पर विचार करें -
odd? = &(rem(&1, 2) != 0)
res = 1..100_000 |> Stream.map(&(&1 * 3)) |> Stream.filter(odd?) |> Enum.sum
IO.puts(res)
जब उपरोक्त कार्यक्रम चलाया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -
7500000000
ऊपर दिए गए उदाहरण में, 1..100_000 |> Stream.map(&(&1 * 3))एक डेटा प्रकार, एक वास्तविक स्ट्रीम देता है, जो 1..100_000 की सीमा पर मानचित्र गणना का प्रतिनिधित्व करता है। इसने अभी तक इस प्रतिनिधित्व का मूल्यांकन नहीं किया है। इंटरमीडिएट लिस्ट जनरेट करने के बजाय, धाराएँ अभिकलन की एक श्रृंखला का निर्माण करती हैं, जो केवल तब संलग्न की जाती हैं जब हम अंतर्निहित स्ट्रीम को Enum मॉड्यूल में पास करते हैं। बड़े, संभवतः अनंत, संग्रह के साथ काम करते समय धाराएं उपयोगी होती हैं।
स्ट्रीम और एनम में कई कार्य समान हैं। धाराएँ मुख्य रूप से Enum मॉड्यूल द्वारा प्रदान किए गए समान कार्य प्रदान करती हैं, जो इनपुट गणनाओं पर गणना करने के बाद उनकी वापसी मानों के रूप में सूचियाँ उत्पन्न करते हैं। उनमें से कुछ निम्न तालिका में सूचीबद्ध हैं -
अनु क्रमांक। | समारोह और इसके विवरण |
---|---|
1 | chunk(enum, n, step, leftover \\ nil) प्रत्येक आइटम में एन्यूमरेबल को स्ट्रीम करता है, जिसमें प्रत्येक आइटम एन होता है, जहां प्रत्येक नया हिस्सा एन्यूमरेबल में स्टेप एलिमेंट्स शुरू करता है। |
2 | concat(enumerables) एक स्ट्रीम बनाता है जो एक एन्यूमरेबल में प्रत्येक एनुमरेट को एनुमरेट करता है। |
3 | each(enum, fun) प्रत्येक आइटम के लिए दिए गए फ़ंक्शन को निष्पादित करता है। |
4 | filter(enum, fun) एक स्ट्रीम बनाता है जो एन्यूमरेशन पर दिए गए फ़ंक्शन के अनुसार तत्वों को फ़िल्टर करता है। |
5 | map(enum, fun) एक स्ट्रीम बनाता है जो गणना पर दिए गए फ़ंक्शन को लागू करेगा। |
6 | drop(enum, n) प्रगणक से अगले n आइटम को लेज़िली ड्रॉप करता है। |