上でlambdaとブロックの話が出ていたが、こういうのはlambdaでできないだろう、と示すのは別物なんだからフェアじゃないな。

Rubyのブロックはwithを作るようなもんなんだろう。
withのような簡単な制御構造や内部DSLを作りやすい。

この使い方がRails以降多用されている。空気のように〜と上ででていたが実際そう。

だけど上であまり強調されていない理由は、その流れをRubyユーザーがあまりよく思っていないからじゃないか?
Rubyスレでも話題が出ると不満がでることが多々ある。

いきすぎた制御構造の拡張や、内部DSLってさ、
ようするに宣言っぽくかけてRubyらしく振舞わないRubyスクリプトなんだよね


ブロックのネストの度に省略されたselfがバンバン変化する
信じられるかい?
このブロックでメソッドを定義したらどうなるのだろう?
>>225のようにトップレベルに定義されるのだろうか?
別のクラスやモジュールに定義されていないか?

こんな疑問を持ちながら、selfを確かめながら、挙動をソースを見ながら(ドキュメントじゃないぞ)
使わないといけないんだよ、ブロックは。