有时,我使用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)
您可以将Fixnum#upto与Float::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。