Ruby 为什么这段代码不使用lambda作为条件参数而变成无限循环

Ruby 为什么这段代码不使用lambda作为条件参数而变成无限循环,ruby,lambda,Ruby,Lambda,我正在阅读Ruby 2.0编程,有一个问题 def my_while(cond, &body) while cond.call body.call end end a=0 my_while -> { a < 3 } do print a a += 1 end #=> 0 1 2 def my_while(cond和body) 当康德打电话时 body.call 结束 结束 a=0

我正在阅读Ruby 2.0编程,有一个问题

   def my_while(cond, &body)
     while cond.call
       body.call
     end
   end

   a=0

   my_while -> { a < 3 } do
     print a
     a += 1
   end #=> 0 1 2
def my_while(cond和body)
当康德打电话时
body.call
结束
结束
a=0
我的while->{a<3}do
打印
a+=1
结束#=>0 1 2
因此,我的问题是:为什么我们不能这样使用这种方法

    def my_while(cond, &block)
      while cond
       block.call
      end   
    end

    a = 0
    my_while (a<3) do
      print a
      a += 1
    end #=> infinite loop
def my_while(cond和block)
当康德
阻塞呼叫
结束
结束
a=0
my_while(无限循环)

实际上如何在条件下使用这个函数(上一个代码示例中的a,上一个代码示例中的a
a,
aI不懂ruby,但我相当肯定
(aI不懂ruby,但我相当肯定
)(amkay,谢谢@Jakob,你知道其他方法吗(除了lambda和procs)作为方法参数条件而不是其值传递?mkay,谢谢@Jakob s您知道另一种方法(除了lambda和procs)作为方法参数条件而不是其值传递吗?