コードを実行するときに、私は、エラーの下に取得しています:ルビー: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'でそのメソッドを検索します。 "暗黙的なレシーバは 'MainObject'ではなく' self'です。(それが何であれ) –
@JörgWMittag トップレベルのコンテキストで、どのクラスの外にも 'self'とは何ですか?それは 'main'オブジェクトです。irbでチェックしてください。 –