2019-03-07
RubyのProcは `#call` 以外でも実行できる
Procオブジェクトは #call を使って実行することが多いと思う。
fn = Proc.new { |v| puts v }
fn.call("Hello, world!")
# => "Hello, world!"
しかし、次のように [] を使っても実行できるのだ。
fn = Proc.new { |v| puts v }
fn["Hello, world!"]
# => "Hello, world!"
引数が複数でも実行できる。
fn = Proc.new { |v, v2| puts "#{v}, #{v2}" }
fn.call("Hello", "world!")
# => "Hello, world!"
fn["Hello", "world!"]
# => "Hello, world!"
ドキュメントにも普通に書いてあるよ(僕は今日知りました)。
https://docs.ruby-lang.org/ja/latest/method/Proc/i/=3d=3d=3d.html
h3pei
フリーランスのソフトウェアエンジニア。Ruby / Rails アプリケーションの開発が得意領域。設計・実装・運用まで含めてプロダクト開発が好きです。
Questal という目標達成コミュニティサービスを開発しました。仲間と一緒に目標達成に取り組みたい方はぜひご利用ください。
<< 前の記事 VSCodeでマウスを使わずにパネルサイズを調整する
次の記事 >> if-then-elseを使うかガード節を使うかの判断基準