执行代码时,我得到以下错误:红宝石:传递块作为参数从oustide类
example.rb:9:in `<main>': undefined method `each' for main:Object (NoMethodError)
9号线是在我的代码最后第二条。
我的代码:
class TargetProvider
def each(target,&block)
block.call(target)
end
end
tp = TargetProvider.new
each { puts "Hello!" }
tp.each(1, each)
我的动机是调用块与目标参数。
如何通过班级以外的块。请任何帮助。
“在Ruby,如果调用的方法,而无需指定通过'的object.method其对象( '),解释器在'MainObject'中搜索该方法。“ - 不。隐含的接收者是'self',而不是'MainObject'(不管是什么)。 –
@JörgWMittag 什么是顶级上下文中任何类之外的'self'?它是'主要'对象,请在irb中检查它。 –