Ruby:带索引的循环?

ma1*_*w28 9 ruby loops

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

ste*_*lag 17

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

loop.with_index{|_, i| puts i; break if i>100}
Run Code Online (Sandbox Code Playgroud)


ma1*_*w28 4

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

0.upto(Float::INFINITY) do |i|
  puts "index: #{i}"
end
Run Code Online (Sandbox Code Playgroud)

但是,我可能会自己使用Kernel#loop并跟踪索引,因为这看起来更简单。

i = 0
loop do
  puts "index: #{i}"
  i += 1
end
Run Code Online (Sandbox Code Playgroud)

所以,是的,我不认为有类似的东西Kernel#loop_with_index