Rubyブロック#1 - Silver/Gold試験対策
まずはメソッドから
メソッドの計算結果は代入できるものの、 メソッド式を丸ごと代入できない
Object#methodによって、メソッドを変数に代入できる。
def hoge p 1 end a = method(:hoge) a.call #=> 1 a.() #=> 1 a[] #=> 1 def fuga(num) p num end b = method(:fuga) b.call(2) #=> 2 b.(2) #=> 2 b[2] #=> 2
methodでオブジェクト化したメソッドは このように引数に設定したり、実行したりが可能
def hoge(a) a * a end def fuga(b, c) puts b.call(c) end m = method(:hoge) fuga(m, 3) #=> 9
methodは、名前付きのメソッドを保存し、変数に代入したり、実行タイミングや、引数の取り扱いの自由度が高まるが Procは、メソッド内容もProc定義時に記載する。 詳しい違いは以下の詳しい
https://docs.ruby-lang.org/ja/latest/class/Method.html (Ruby 2.3.0)