accumulate ऑपरेशन लागू कीजिए। यह ऑपरेशन एक कलेक्शन और एक और ऑपरेशन लेता है, जिसे कलेक्शन के हर एलिमेंट पर करना होता है। फिर यह इनपुट कलेक्शन के हर एलिमेंट पर वह ऑपरेशन लागू करके जो नतीजे मिलते हैं, उन्हें लेकर एक नया कलेक्शन लौटाता है।
मान लीजिए संख्याओं का यह कलेक्शन दिया गया है:
और ऑपरेशन यह है:
x => x * x)आपके कोड से वर्गों का यह कलेक्शन बनना चाहिए:
अपेक्षित फंक्शन सिग्नेचर देखने के लिए टेस्ट सूट देखिए।
अपनी स्टैंडर्ड लाइब्रेरी में मिलने वाली उस collect/map/fmap या जो भी उसका नाम हो, ऐसी सुविधा को हाथ मत लगाइए! इसके बजाय दूसरे बुनियादी टूल इस्तेमाल करके इसे खुद हल कीजिए।
जब किसी सामान्य Enumerable के लिए मेथड बनाते हैं, तो आम तौर पर #to_enum को कॉल किया जाता है, ताकि कोई ब्लॉक न दिए जाने पर भी काम चल जाए।
यहाँ एक अतिरिक्त टेस्ट दिया गया है, जिसे आप जोड़ सकते हैं:
def test_accumulate_when_block_is_deferred
skip
accumulate_enumerator = [1, 2, 3].accumulate
accumulated_result = accumulate_enumerator.map do |number|
number * number
end
assert_equal [1, 4, 9], accumulated_result
end
Exercism पर साइन अप कीजिए और Ruby को 21 कॉन्सेप्ट121 अभ्यास तथा असली इंसानों से मिलने वाली मेंटरिंग के साथ सीखिए और उसमें महारत हासिल कीजिए, वह भी बिल्कुल मुफ्त।