तो मैं एक सीमा पर इतरा रहा हूँ जैसे:
(1..100).each do |n|
# n = 1
# n = 2
# n = 3
# n = 4
# n = 5
end
लेकिन मैं जो करना चाहता हूं वह 10 के दशक से है।
तो n1 से बढ़ने के क्रम में , अगला nवास्तव में 10, फिर 20, 30, आदि होगा।
तो मैं एक सीमा पर इतरा रहा हूँ जैसे:
(1..100).each do |n|
# n = 1
# n = 2
# n = 3
# n = 4
# n = 5
end
लेकिन मैं जो करना चाहता हूं वह 10 के दशक से है।
तो n1 से बढ़ने के क्रम में , अगला nवास्तव में 10, फिर 20, 30, आदि होगा।
जवाबों:
पूर्ण एपीआई के लिए http://ruby-doc.org/core/classes/Range.html#M000695 देखें ।
मूल रूप से आप step()विधि का उपयोग करते हैं । उदाहरण के लिए:
(10..100).step(10) do |n|
# n = 10
# n = 20
# n = 30
# ...
end
(time1..time2).step(15.minutes) do |time|
आप उपयोग कर सकते हैं Numeric#step।
0.step(30,5) do |num|
puts "number is #{num}"
end
# >> number is 0
# >> number is 5
# >> number is 10
# >> number is 15
# >> number is 20
# >> number is 25
# >> number is 30
यहाँ यह करने के लिए एक और शायद परिचित तरीका है:
for i in (0..10).step(2) do
puts i
end
forछोरों को दृढ़ता से हतोत्साहित करता है।
for, आपको eachविधि का उपयोग करना चाहिए ।
rng.step(n=1) {| obj | block } => rng
ब्लॉक पर प्रत्येक nth तत्व को पास करते हुए, rng पर Iterates होता है। यदि श्रेणी में संख्याएँ या तार होते हैं, तो प्राकृतिक ऑर्डरिंग का उपयोग किया जाता है। अन्यथा चरण सीमा तत्वों के माध्यम से पुनरावृति के लिए आह्वान करता है। निम्न कोड कक्षा Xs का उपयोग करता है, जिसे वर्ग-स्तरीय प्रलेखन में परिभाषित किया गया है।
range = Xs.new(1)..Xs.new(10)
range.step(2) {|x| puts x}
range.step(3) {|x| puts x}
पैदा करता है:
1 x
3 xxx
5 xxxxx
7 xxxxxxx
9 xxxxxxxxx
1 x
4 xxxx
7 xxxxxxx
10 xxxxxxxxxx
संदर्भ: http://ruby-doc.org/core/classes/Range.html
......