5
のRuby 1.9.xでカリー化については、私はいくつかの場所でそれを使用してきた、と基本的にはprocの引数にデフォルトパラメータをサポートするように翻訳することができます。Ruby Reverse Currying:これは可能ですか?
p = proc {|x, y, z|x + y + z}
p.curry[1] #=> returns a lambda
p.curry[1, 2] #=> returns a lambda
p.curry[1, 2, 3] #=> 6
p2 = p.curry[1, 2]
p2.(2) #=> 5
p2.(4) #=> 7
非常に便利な、右?事は、私は逆にカレーすることができます、つまり、私のprocの最後の引数をランダムな値で埋めることができるようにしたいと思います。このように:
p = proc{|x, y| x - y }.curry[1]
p.(4)
私の望む結果は3になります。これは-3を返します。
ヒュムは、それを試してみるに行く、十分にきれいに見えます。ユースケースは、メソッド上でデフォルトの引数を持つことと同じ動作を特定の場所に複製することです。これらは、最後の引数から逆方向にしか設定できません。私は同じ方法を取って、別のコンテキストで別の値でデフォルトの引数を置き換えたいと思っていました。 – ChuckE