【发布时间】:2011-04-24 20:12:55
【问题描述】:
我最近想到了一个可怕的想法,即 Ruby 中的 Integer.count 循环从 0 开始,然后转到 n-1,同时玩 Facebook 工程难题。我做了一个肮脏的修复,在开始时向块变量添加一个,以便它从一个开始。
有没有更漂亮的方法?
例子:
10.times do |n|
n += 1
puts n
end #=> 012345789
【问题讨论】:
我最近想到了一个可怕的想法,即 Ruby 中的 Integer.count 循环从 0 开始,然后转到 n-1,同时玩 Facebook 工程难题。我做了一个肮脏的修复,在开始时向块变量添加一个,以便它从一个开始。
有没有更漂亮的方法?
例子:
10.times do |n|
n += 1
puts n
end #=> 012345789
【问题讨论】:
Ruby 支持多种计数和循环方式:
1.upto(10) do |i|
puts i
end
>> 1.upto(10) do |i|
> puts i
| end #=> 1
1
2
3
4
5
6
7
8
9
10
还有step 而不是upto,它允许您按步长递增:
>> 1.step(10,2) { |i| puts i } #=> 1
1
3
5
7
9
【讨论】:
【讨论】:
试试
(1..10).each do |i|
# ... i goes from 1 to 10
end
相反。当i 的值很重要时,它也更容易阅读。
【讨论】:
旧的,但这可能是某人正在寻找的东西..
5.times.with_index(100){|i, idx| p i, idx};nil
#=>
0
100
1
101
2
102
3
103
4
104
【讨论】:
当然还有while-loop:
i = 1
while i<=10 do
print "#{i} "
i += 1
end
# Outputs: 1 2 3 4 5 6 7 8 9 10
【讨论】: