Еквівалент "продовжувати" в Рубі


648

У C та багатьох інших мовах є continueключове слово, яке при використанні всередині циклу переходить до наступної ітерації циклу. Чи є еквівалент цього continueключового слова в Ruby?


4
продовження не «перезапускає» цикли, а переходить до наступної ітерації циклу.
Метт Крінклау-Фогт

1
@mlaw: Я відповідно відредагував своє запитання, щоб запобігти плутанині в майбутньому.
Марк Шиманський

7
@dbr відповідь, який ви знайшли, запитали після цього.
Droogans

Відповіді:


933

Так, це називається next.

for i in 0..5
   if i < 2
     next
   end
   puts "Value of local variable is #{i}"
end

Це виводить наступне:

Value of local variable is 2
Value of local variable is 3
Value of local variable is 4
Value of local variable is 5
 => 0..5 

13
Ось як я пам’ятаю - Рубі поважає Perl ( next) вище C ( continue)
Полковник Паніка



42

Всередині для петель і ітераторних методи , як eachі ключове слово в рубіна матиме ефект переходу до наступної ітерації циклу ( так само , якmapnextcontinue в С).

Однак, що насправді робить, це просто повернутися з поточного блоку. Таким чином, ви можете використовувати його з будь-яким методом, який займає блок - навіть якщо це не має нічого спільного з ітерацією.


а також приємна повторна заява
Сігурд



1

Використовуйте далі, це обійде цю умову і решта коду спрацює. Нижче я надав Повний сценарій і виклав

class TestBreak
  puts " Enter the nmber"
  no= gets.to_i
  for i in 1..no
    if(i==5)
      next
    else 
      puts i
    end
  end
end

obj=TestBreak.new()

Вихід: Введіть номер 10

1 2 3 4 6 7 8 9 10

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.