渡す必要があるブロックFile.openと別のメソッドがありXXobject#readます。これら 2 つのメソッドに同じブロックを渡したので、ブロックのコードの重複を避ける方法を見つけたいと思います。
Procオブジェクトを定義しようとしましたが、オブジェクトFile.openを受け入れないようProcです。なぜだろうと思います。私の知る限り、ブロックはProcオブジェクトとして保存されます。
Rubyでブロックの重複を避ける方法はありますか?
Proc を Block に変換する必要があります。
blk = Proc.new{puts 1234567890}
def a; yield; end
a(&blk)
1.9.3-194 (main):0 > a(&blk)
1234567890
=> nil
すでにコメントに書かれているように、 を使用して proc をブロックに変換できます&。
を定義したらyour_proc、次を使用してブロック引数として渡すことができます&your_proc
proc = Proc.new
&proc
それはブロックです。ブロックはメソッドの引数として使用できます