のメソッドにPROCを変換する標準的な方法は、あなたのようなラムダを呼び出すことができること、しかし、いくつかのRubyでこれを行う方法?:ルビー
add = lambda { |x, y| x + y }
add_m = add.to_method
add_m(3, 4)
のメソッドにPROCを変換する標準的な方法は、あなたのようなラムダを呼び出すことができること、しかし、いくつかのRubyでこれを行う方法?:ルビー
add = lambda { |x, y| x + y }
add_m = add.to_method
add_m(3, 4)
add = lambda { |x, y| x + y }
define_singleton_method(:add_m,&add)
p add_m(3,4)
#=> 7
注そこですしかし、角括弧を持つ方法は:
add = lambda { |x, y| x + y }
p add[3,4]
#=> 7
興味深い。標準的な方法がない場合は、おそらくこれを使用します。 –
@VladtheImpala 'define_singleton_method'を使って私の修正された答えを見てください。 – Phrogz
'add。(3,4)'もRuby(1.9.0+)のやや新しいバージョンを前提としています。 –
あなたに結合されている変数/シンボルの名前を取得する簡単な方法はありませんので、部分的に、あなたは正確に得ることができるとは思いません。
最も近いマッチ私見:それはあなたがにメソッドを追加するオブジェクトはない場合
class Proc
def to_method(m)
p=self
Object.class_eval {define_method(m, &p)}
end;
end
add = lambda { |x, y| x + y }
add.to_method(:add_m)
add_m(3, 4)
、あなたもクラスに渡す必要があります。
構文はあまり関係ない場合は、Phrogz」の提案で行くことができます:あなたは `add_m [3の代わりに平均値、[3,4]
か、単に
add.call(3,4)
を追加し、 4] 'あなたは括弧を使いたい/必要がありますか? – Phrogz
。私は 'add_m(3、4)'が欲しいです。 –