Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

lambda式やprocは[]でも呼び出せる

lambdaはcall以外にも[]で呼び出す事ができます

printout = ->(x) { ("*" * 10) << x.to_s << ("*" * 10)}
#=> #<Proc:0x007fb58d03ef18@(irb):34 (lambda)>

printout['a']
#=> "**********a**********"

これはprocも同様です

p = proc {|x| puts x}
#=> #<Proc:0x007fb58c86c538@(irb):47>

p['a']
#=> a

ためしにリファレンスを読んでみると...

instance method Method#

self[*args] -> object[permalink][rdoc]
call(*args) -> object
call(*args) { ... } -> object
メソッドオブジェクトに封入されているメソッドを起動します。

引数やブロックはそのままメソッドに渡されます。

self の形の呼び出しは通常のメソッド呼び出しに見た目を 近付けるためだけに用意されたもので、Array#のような 他の メソッドとの意味的な関連性はありません。
(以下略)

ちゃんと載ってます。
ぱっとみ配列っぽくなってしまいますが、手早く書く事ができそうです