क्योंकि रूबी केवल यही बताता है कि आपने क्या कहा है, न कि mean।
यह नहीं बता सकता कि आप रिवर्स (यानी 5, 4, 3, 2, 1) में जाना चाहते हैं, या आप वास्तव में केवल 5 से शुरू होने वाली संख्या चाहते हैं जो 1 से कम या बराबर हैं। सैद्धांतिक रूप से संभव है कि कोई उत्तरार्द्ध चाहता है, और क्योंकि रुबी आप जो वास्तव में चाहते हैं उसे नहीं बता सकते हैं, यह बाद वाले के साथ जाएगा।
class Range
def each
if self.first < self.last
self.to_s=~(/\.\.\./) ? last = self.last-1 : last = self.last
self.first.upto(last) { |i| yield i}
else
self.to_s=~(/\.\.\./) ? last = self.last+1 : last = self.last
self.first.downto(last) { |i| yield i }
end
end
end
फिर, निम्नलिखित कोड के रूप में आप चाहते सिर्फ प्रदर्शन करेंगे:
स्रोत
2012-01-11 21:31:15
बहुत अच्छा, धन्यवाद डेरेक! – larryzhao
और रूबी के आधुनिक संस्करणों में, आप 'x = 5.downto (1)' कर सकते हैं और एक चर के रूप में 'x' पास कर सकते हैं। –
अच्छा। एक रेंज स्वचालित रूप से प्रत्येक इटरेटर के रूप में एक ब्लॉक को संभालती है। '.each' – ahnbizcad