在ruby中,如何从方法内部的while循环返回值而不关闭方法本身?

在ruby中,如何从方法内部的while循环返回值而不关闭方法本身?,ruby,Ruby,我希望程序从方法内部的循环返回值,而不是每次调用该方法时都重新启动它您可以使用yield语句或proc获取循环中的值,并对其执行任何操作: def yielder i = 5 while i > 0 do puts i i -= 1 yield i end end yielder {|i| puts "returning the value of #{i}" } 因此,yield方法实际上返回的值没有closinf方法evrytime,如果我得到

我希望程序从方法内部的循环返回值,而不是每次调用该方法时都重新启动它

您可以使用yield语句或proc获取循环中的值,并对其执行任何操作:

def yielder
  i = 5
  while i > 0 do 
    puts i
    i -= 1
    yield i
  end
end

yielder {|i| puts "returning the value of #{i}"  }

因此,yield方法实际上返回的值没有closinf方法evrytime,如果我得到它的话?从方法调用'yield'会将代码执行到方法名称后面的块上-所以无论在{}之间是什么,然后是之后,继续执行调用的原始方法。因此,当程序到达第一个产量时,它会退出值,在方法之后执行代码,然后从上次调用的产量重新开始执行,如果我捕获到的话?是的,我想你已经了解了要点。但我真的需要两个{}或者我可以直接看一下这个方法的结果?