タイトルはおおげさすぎ。きっかけは 新しいwhyプロダクト、ShoesはGUIツールキット。 サンプルはこんな感じ。 Shoes.app do button "Press Me" do alert "You pressed me" end end こういうAPIは好みだ。 http://www.rubyist.net/~matz/20070801.html#p02 を見たこと。 「あーinstance_evalはやっぱり便利ですよね」と思ってみてたんだけど*1、この構造って再帰的に使えるよなぁ、と思ったのでコードでメモ。 ポイントは、上のソース中のbuttonというメソッド。buttonメソッドはソースの字面をみると定義なしに突然使われているんだけど、instance_evalの黒魔術を使うとこういうことができる。obj.instance_eval do .. end という構文を使うとブ