2010/09/15

縛られたいという話

http://www.atmarkit.co.jp/news/201009/13/spell.html

メタプログラミング ruby を読み終えた。よくまとまっていて、いい本だなあと思った。
一つ知らないことがあって、それのおかげで仕事のコードも instance_eval 使ってた所を一ヶ所綺麗に出来たし、よかったなあ。
ディスプレイの向こうから「eval は怖くない」って唱えてくる人がいて、怖かった…

一つ思うのは、ruby のメタプログラミングはあんまりメタメタしてないっていうことで、他の言語では実行時の世界とは切り離されたところにいる者達が、ruby では向こうから歩み寄ってきているという感じがある。なんていうか、者達、みたいな物々しさも既にない。子たち。
なんていうか、こう、寄ってこられるとちょっと魅力がなくなっちゃいますよねみたいな。それはそれでかわいいんですけども。いや何の話だ…

あと ruby は syntax に対するアレやソレができないっていうのはある気がするなあ。

本には書かれていなかったけれど、特異メソッドをスコープをオープンに保ったまま定義する方法を思いついたので書いておく。特異クラスさえ得られれば、あとは instance_eval で特異クラスのコンテキストをスコープをフラットに保ったまま得ることができるので、あとは define_method するだけ。特異クラスを得るには class を書く必要があるからダメだ、と最初は考えていたけれど、これはメソッドの定義とは関係ないから何の問題もなかった。

書いてみたら括弧がタグと間違えられたので矢張りはてなで書こう…明日…

profile


niha

http://niha28.sakura.ne.jp/