procとcall

Rubyでは、proc { ... }で手続きが作れ、callで手続きを呼び出せます。

p(123) # => 123

pp = proc { |x| p(x) }
pp.call(123) # => 123

ppp = proc { |xx, x| xx.call(x) }
ppp.call(pp,123) # => 123

pppp = proc { |xxx, xx, x| xxx.call(xx, x) }
pppp.call(ppp, pp, 123) # => 123

ppppp = proc { |xxxx, xxx, xx, x| xxxx.call(xxx, xx, x) }
ppppp.call(pppp, ppp, pp, 123) # => 123