रूबी में इस प्रकार के लूप के लिए मैं कैसे करूं?
for(int i=0; i<array.length; i++) {
}
रूबी में इस प्रकार के लूप के लिए मैं कैसे करूं?
for(int i=0; i<array.length; i++) {
}
जवाबों:
array.each do |element|
element.do_stuff
end
या
for element in array do
element.do_stuff
end
यदि आपको सूचकांक की आवश्यकता है, तो आप इसका उपयोग कर सकते हैं:
array.each_with_index do |element,index|
element.do_stuff(index)
end
eachमहान है। लेकिन कभी-कभी मैं सिर्फ लूप के लिए एक गॉडडैम पारंपरिक चाहता हूं। कभी-कभी "रूबी रास्ता" सिर्फ सादा कष्टप्रद हो सकता है।
मैं इसे "रूबी फॉर लूप" के लिए एक शीर्ष लिंक के रूप में रखता हूं, इसलिए मैं छोरों के लिए एक समाधान जोड़ना चाहता था जहां कदम बस '1' नहीं था। इन मामलों के लिए, आप 'स्टेप' विधि का उपयोग कर सकते हैं जो न्यूमेरिक्स और डेट ऑब्जेक्ट पर मौजूद है। मुझे लगता है कि यह 'लूप' के लिए एक करीबी अनुमान है।
start = Date.new(2013,06,30)
stop = Date.new(2011,06,30)
# step back in time over two years, one week at a time
start.step(stop, -7).each do |d|
puts d
end
array.each_index do |i|
...
end
यह बहुत बकवास नहीं है, लेकिन यह रूबी में सवाल से लूप के लिए सबसे अच्छा तरीका है
each, बल्कि each_index। +1
यदि आप अपने सरणी का उपयोग करने की जरूरत नहीं है आप उपयोग कर सकते हैं, (सिर्फ पाश के लिए एक सरल) तक या प्रत्येक:
तक:
1.9.3p392 :030 > 2.upto(4) {|i| puts i}
2
3
4
=> 2
से प्रत्येक:
1.9.3p392 :031 > (2..4).each {|i| puts i}
2
3
4
=> 2..4
क्या? 2010 से और किसी ने उल्लेख नहीं किया है कि रूबी के पास / लूप में जुर्माना है (यह सिर्फ इसका उपयोग नहीं करता है):
ar = [1,2,3,4,5,6]
for item in ar
puts item
end
रूबी की गणना पाश वाक्य रचना अलग है:
collection.each do |item|
...
end
यह "ऑब्जेक्ट ऑब्जेक्ट उदाहरण संग्रह 'के' प्रत्येक 'विधि के लिए एक कॉल के रूप में पढ़ता है जो तर्क के रूप में' अवरोधक 'के साथ ब्लॉक लेता है।" रूबी में ब्लॉक सिंटैक्स सिंगल लाइन स्टेटमेंट के लिए 'डू ... एंड' या '{...}' है।
ब्लॉक तर्क '| आइटम |' वैकल्पिक है, लेकिन यदि प्रदान किया जाता है, तो पहला तर्क स्वचालित रूप से अनूदित आइटम का प्रतिनिधित्व करता है।