3

渡す必要があるブロックFile.openと別のメソッドがありXXobject#readます。これら 2 つのメソッドに同じブロックを渡したので、ブロックのコードの重複を避ける方法を見つけたいと思います。

Procオブジェクトを定義しようとしましたが、オブジェクトFile.openを受け入れないようProcです。なぜだろうと思います。私の知る限り、ブロックはProcオブジェクトとして保存されます。

Rubyでブロックの重複を避ける方法はありますか?

4

3 に答える 3

4

Proc を Block に変換する必要があります。

blk = Proc.new{puts 1234567890}

def a; yield; end

a(&blk)

1.9.3-194 (main):0 > a(&blk)
1234567890
=> nil
于 2012-09-03T09:00:30.333 に答える
2

すでにコメントに書かれているように、 を使用して proc をブロックに変換できます&

を定義したらyour_proc、次を使用してブロック引数として渡すことができます&your_proc

于 2012-09-03T09:01:06.633 に答える
0

proc = Proc.new &proc それはブロックです。ブロックはメソッドの引数として使用できます

于 2012-09-03T13:35:59.183 に答える