Ruby 为什么这段代码不使用lambda作为条件参数而变成无限循环
我正在阅读Ruby 2.0编程,有一个问题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
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)作为方法参数条件而不是其值传递吗?