2016-10-20 8 views
1

ブロックにメソッドからのすべてのパラメータを渡す:今すぐ私はRubyのメソッドと以下のように構成されたブロック持っ

def control; yield(1,2,3); end 
calc = -> (a,b,c) { a + b+ c } 

を、私はこのように、calcブロックにcontrol方法の利回りからすべてのparamsを通過したいです:

control{|a,b,c| calc[a,b,c]} 
control{|*args| calc[*args]} # another succint way to write that. 
# => 6 

もっと読みやすい方法や構文がありますか?おそらく、次のように:

control.passthru(:calc) 
control(&:calc) # this won't work I know, but still is more readable to me 
control.yield[calc] 
calc.call(*control.yielded_params) 

答えて

0

私はなぜあなたはそれをより読みだと思いますが、ここであなたが行くかわからない:それは:calcシンボルにSymbol#to_procを呼び出すため

control &calc 
#⇒ 6 

control(&:calc)は機能していません。 λを直接渡したいと思う可能性があります。

関連する問題