Ruby勉強

インターネットの企画職な人がプログラミングを勉強するブログ

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)