跳过ruby for循环中的一些迭代

时间:2015-06-02 14:11:43

标签: ruby loops iteration skip

我如何在ruby中的for循环中实现这样的东西:

for(int i = 1;i<=10;i++){
        if (i == 7){
            i=9;
        }
        #some code here
    }

我的意思是说可以使用&#34; next&#34;跳过但如果我想通过改变变量值本身跳转到不确定的迭代该怎么办。据我所知,循环使用可枚举类型。我想通过索引作为变量循环它,就像我们在C ++中那样做

5 个答案:

答案 0 :(得分:3)

你可以做的事情很少:

如果你想根据定义的逻辑跳过几次迭代,你可以使用:

next if condition

如果您打算在整个范围内随机迭代,可以试试这个:

(1..10).to_a.shuffle.each { |i| 
   # your code
}

如果你想在给定范围的某个块上随机迭代,试试这个:

(1..10).to_a.shuffle.first(n).each { |i| # n is any number within 1 to 10
  # your code
}

答案 1 :(得分:2)

您问题的最准确答案是使用while循环,如下所示:

i = 0
while i < 10
  if i == 0 # some condition
    i = 9 # skip indexes
  else
    i += 1 # or not
  end
end

答案 2 :(得分:1)

为什么不采用递归方法? 喜欢

foo(x)
{
    if x == 7
    {
        return foo(9)
    }
    return foo(x+1)
}

答案 3 :(得分:1)

(1..10).each do |i|
  next if(i == 7 || i == 8)
  # some code here
end

答案 4 :(得分:1)

这个怎么样?

array = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]

array.each_with_index do |elem, idx|
    break if idx == 9
    # do something
    puts "element #{idx} with #{elem}"
end