methodメソッド

methodメソッドを使うと、メソッドオブジェクトを得ることができます。得るメソッドは名前で指定します。

p 1.method(:nil?)       #=> #<Method: Fixnum(Kernel)#nil?>
p nil.method(:nil?)     #=> #<Method: NilClass#nil?>

得たメソッドのアリティ、文字列表現、呼び出しは以下の通り。

p nil.method(:nil?).arity       #=> 0
p nil.method(:nil?).inspect     #=> "#<Method: NilClass#nil?>"
p nil.method(:nil?).call        #=> true

to_procでProcにしてからcallすることもできる。

p nil.method(:nil?).to_proc.call    #=> true

もう何がなにやら。

p nil.method(:method).call(:nil?).to_proc.call      #=> true
p nil.method(:method).to_proc.call(:method).to_proc.call(:nil?).to_proc.call #=> true