メソッドと Proc の相互変換(Ruby)
これらができたからとて、特にうれしいことはない感じです。
メソッド→Proc。Object#method と Method#to_proc を使う。
m = 100.method(:to_s) p m #=>#<Method: Integer#to_s(*)> p m.call(2) #=>"1100100" pr = m.to_proc p pr #=>#<Proc:0x000055e967ad8300 (lambda)> p pr.call(16) #=>"64"
Proc→メソッド。Proc は無名関数なので、メソッド名が必要。あとは Module#define_method を使えばよい。
pr = ->(n, base) {n.to_s(base)} define_method(:to_string, pr) p to_string(100, 16) #=>"64"