RubyのProcやlambdaについての記事は検索するとよく出てくるが、ブロックはなぜかいまいちスポットライトが当たらない。あってもProcの説明のオマケみたいな感じが関の山。 この記事ではそんな不遇なブロックについて焦点を当ててみたい。 ブロックとは何か まずはここの認識を合わせておこう。Rubyの構文において、メソッド呼び出しの後ろにくっつくことがあるdo〜end、もしくは{〜}の間にあるコードの塊をブロックと呼ぶ。 すべてがオブジェクトであるRubyでも、言語の文法を構成する要素はオブジェクトではない。例えばifとか、代入式の=や、変数などはオブジェクトではない。当たり前といえば当たり前なのだが、同様に、文法を構成する要素であるブロックはオブジェクトではない。 Procオブジェクトと一緒に「似たようなもの」と説明されると地味に理解しづらいのだが、ProcはRubyの文法とは何の関係