執行代碼時,我得到以下錯誤:紅寶石:傳遞塊作爲參數從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中檢查它。 –