Ruby:带索引的循环?

时间:2014-04-12 14:08:33

标签: ruby loops

有时候,当我想跟踪索引时,我会使用Ruby Enumerable#each_with_index而不是Array#each。有没有Kernel#loop_with_index这样的方法我可以使用而不是Kernel#loop

3 个答案:

答案 0 :(得分:15)

没有块的循环会产生一个枚举器,它有一个with_index方法(如果您愿意,可以使用each_with_index。)

loop.with_index{|_, i| puts i; break if i>100}

答案 1 :(得分:3)

您可以将Fixnum#uptoFloat::INFINITY一起使用。

0.upto(Float::INFINITY) do |i|
  puts "index: #{i}"
end

但是,我可能只是使用Kernel#loop并自己跟踪索引,因为这似乎更简单。

i = 0
loop do
  puts "index: #{i}"
  i += 1
end

所以,是的,我不认为有Kernel#loop_with_index

答案 2 :(得分:3)

在最近的Ruby版本中,Numeric#step的默认限制为Infinity,步长为1。

0.step{|i| puts i ; break if i>100 }