2015-06-02 3 views
0

Как я могу добиться чего-то подобного в цикл рубина:пропустить некоторые итерации в рубин цикл

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

Я хотел сказать, что это нормально использовать «рядом», чтобы пропустить, но что делать, если я хочу просто перейти к неопределенной итерации путем изменения самого значения переменной. Насколько я знаю, цикл работает с перечислимым типом. Я хочу скопировать его через индекс как переменную, как мы это делаем в C++

+0

возможно дубликат [Синтаксис для цикла в рубин] (http://stackoverflow.com/questions/2032875/syntax-for-a-for-loop-in-ruby) – Pak

ответ

1

Почему не рекурсивный подход? как

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

Есть несколько вещей, которые вы можете сделать:

Incase вы хотите пропустить несколько итераций на основе определенной логики, вы можете использовать:

next if condition 

Если ваше намерение для случайного итерации по всему диапазону, вы можете попробовать следующее:

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

Incase вы хотите, чтобы случайно перебрать определенный кусок данного диапазона, попробуйте следующее:

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

Наиболее точный ответ на ваш вопрос будет использовать while цикл, как это:

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

Как насчет этого?

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 
Смежные вопросы