Вызовите метод изнутри себя, чтобы выполнить снова - PullRequest
4 голосов
/ 17 августа 2010

Как правильно в ruby ​​вызывать метод изнутри себя для повторного запуска? В приведенном ниже примере, когда @dest_reenter равно yes, я бы хотел, чтобы метод b_stage снова выполнялся

def b_stage 
    if @dest_reenter == 'yes'
        @dest_reenter = nil
        b_stage
    end
end

Ответы [ 2 ]

6 голосов
/ 17 августа 2010

Именно так вы делаете рекурсию, но использование этих переменных экземпляра - не тот путь. Лучшим примером будет что-то вроде этого:

def b_stage(i)
    if i < 5
        puts i
        i += 1
        b_stage(i)
    end
end

Если вы позвоните b_stage(0), вывод будет

0
1
2
3
4
0 голосов
/ 16 сентября 2013

Используйте отдельный метод:

def go
  ...
  middle_thing(true)
end

def middle_thing(first_time)
  next_page unless first_time == true
  parse_page
end

def parse_page
  ...(parsing code)
  middle_thing(false)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...