如何从 ruby 中的递归方法转义



我创建了一个递归函数,它试图解析解析列表中的信息。这有点难以解释,但它类似于

在解析维基百科电影页面或演员页面

的解析函数中,首先从维基百科演员页面解析电影列表 ->在解析的列表上调用相同的函数 ->重复

我设置了一个全局变量来计算迭代次数,但是当我尝试脱离函数并通过执行继续下一步时,

if $counter > 10
    return nil
end

但它不会立即结束,因为仍然有函数要调用 left(因为它是递归的)。我尝试使用"中止",但这个只是终止了程序,而不是继续下一个程序。

有没有办法在不中止程序的情况下立即停止递归运行并继续下一步?

没有更多代码有点难以回答。但我想你正在寻找nextbreak来跳出递归性。

next

跳转到最内部循环的下一个迭代。如果在块内调用,则终止块的执行(收益率或调用返回 nil)。

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

结果:

  • 局部变量的值为 2
  • 局部变量的值为 3
  • 局部变量的值为 4
  • 局部变量的值为 5

break

终止最内部的循环。如果在块中调用具有关联块的方法,则终止该方法(该方法返回 nil)。

for i in 0..5
   if i > 2 then
      break
   end
   puts "Value of local variable is #{i}"
end

结果:

  • 局部变量的值为 0
  • 局部变量的值为 1
  • 局部变量的值为 2

最新更新