我可以在 Proc 内生成一个块吗?考虑这个例子:
a = Proc.new do
yield
end
a.call do
puts "x"
end
我想要实现的是打印x
,但是用 ruby 2.0 解释这一点会引发LocalJumpError: no block given (yield)
.
不,你不能,因为你创建的 Proc 是一个独立的yield
- 也就是说,它是一个yield
在其上下文中没有块。虽然您可以使用指定参数调用 proc,从而将参数传递到 proc,yield
不能根据指定的参数工作;它执行在 proc 闭包中找到的块。并且过程的闭包是预定义的;它不会仅仅因为您稍后用块调用它而被修改。
所以这相当于直接输入“yield”irb
(不在任何方法定义内)它返回LocalJumpError: no block given (yield)
error.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)