从内部调用方法再次执行

vec*_*ccy 5 ruby recursion

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

def b_stage 
    if @dest_reenter == 'yes'
        @dest_reenter = nil
        b_stage
    end
end
Run Code Online (Sandbox Code Playgroud)

Jes*_*sky 7

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

def b_stage(i)
    if i < 5
        puts i
        i += 1
        b_stage(i)
    end
end
Run Code Online (Sandbox Code Playgroud)

如果你打电话b_stage(0),输出将是

0
1
2
3
4
Run Code Online (Sandbox Code Playgroud)