Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

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#のような 他の メソッドとの意味的な関連性はありません。
(以下略)

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