基于最后一个循环的结果循环遍历具有更改步骤的数组

时间:2015-11-24 08:31:30

标签: ruby loops for-loop iteration

我已经了解了这个answer,并知道我们可以做到这一点:

(0..array.length - 1).step(2).each do |index|
    value_you_care_about = array[index]
end

但是我发现语法不能用于通过最后一个循环的结果改变自己的步骤。像C ++代码一样:

for(int x = 1; x<cx; x+=x){
    value_i_care_about = array[x];
    //do something with the value I care about.  
}

这与该问题不同,因为x加上自身作为循环步骤。有谁知道如何编码?这很有用,例如在merge-sort实现中。

非常适合任何帮助!

更新

据我所知,我们只能通过以下代码实现:

step = 1
while step < nums.length do
    // do sth.
    step += step
end

有更好的实施吗?

1 个答案:

答案 0 :(得分:1)

如果你讨厌循环前面的phpish声明(step = 1),就像我一样,你可能会发现无限loop有用的方法:

loop.inject(1) do |x| 
  break if x > 10
  puts x
  x += x
end
#⇒ 1
#  2
#  4
#  8