2016-12-08 7 views
3

私はブロックを必要とするメソッドを持っていますが、私はちょうどProcオブジェクトを持っています。私は醜いラッピングなしでそれをどのように呼び出すことができますか?Ruby:ブロックの代わりにprocを使ってメソッドを呼び出す方法

def twice 
    yield 
    yield 
end 

p = Proc.new { puts "Hello" } 

twice p   # Does not compile "wrong number of parameters" 
twice { p.call } # Ugly and difficult for additional parameters 

答えて

5

あなたは単項アンパサンド(&)を使用してblockprocを変換することができます:

twice &p 
# Hello 
# Hello 
#=> nil 
+0

カワイイを、私はそれを試してみましたが、 '@'をmisstyped。 D'oh ... –

関連する問題