有时候,当我想跟踪索引时,我会使用Ruby Enumerable#each_with_index
而不是Array#each
。有没有Kernel#loop_with_index
这样的方法我可以使用而不是Kernel#loop
?
答案 0 :(得分:15)
没有块的循环会产生一个枚举器,它有一个with_index
方法(如果您愿意,可以使用each_with_index
。)
loop.with_index{|_, i| puts i; break if i>100}
答案 1 :(得分:3)
您可以将Fixnum#upto与Float::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 }