从内部调用方法再次执行

时间:2010-08-16 20:54:06

标签: ruby recursion

ruby​​从内部调用方法重新运行的正确方法是什么 在下面的示例中,当@dest_reenter等于yes时,我希望b_stage方法再次执行

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

2 个答案:

答案 0 :(得分:6)

这就是你如何进行递归,但使用这些实例变量不是一种方法。一个更好的例子是这样的:

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

如果致电b_stage(0),输出将为

0
1
2
3
4

答案 1 :(得分:0)

使用单独的方法:

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