Ruby 从内部调用方法以再次执行

Ruby 从内部调用方法以再次执行,ruby,recursion,Ruby,Recursion,在ruby中,从内部调用方法以重新运行的正确方法是什么 在下面的示例中,当@dest_reenter等于yes时,我希望再次执行b_stage方法 def b_stage if @dest_reenter == 'yes' @dest_reenter = nil b_stage end end 这就是递归的实现方式,但是使用这些实例变量并不是一种好方法。更好的例子如下: def b_stage(i) if i < 5

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

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

这就是递归的实现方式,但是使用这些实例变量并不是一种好方法。更好的例子如下:

def b_stage(i)
    if i < 5
        puts i
        i += 1
        b_stage(i)
    end
end
使用单独的方法:

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

这是正确的写法。你对代码有什么问题吗?顺便说一句,它叫做递归(),我在ruby中使用这个概念,但是执行不会再次发生。我不知道这在鲁比耶是否有效,它是。您的代码中的其他地方有一个bug。那么
@dest\u reenter
不能是
'yes'
。它确实是有效的。
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