2004-09-06 ========== class_eval のブロックを与えたときと文字列を与えたときの違い ----------------------------------------------------------- Reference URI: http://lowreal.net/logs/2004/09/06/2 Written Time: 2004-09-06T15:41:56+09:00 Tags: prog このメソッドの挙動がよくわからない。PluginBase.class_eval(%Q|@@irc = irc|) では思ったとおりだけど、PluginBase.class_eval { @@irc = irc } だと uninitilized class variable が出る。とりあえず前者にしとけば動くのでいいけど 、なんか気持ち悪い。 プラグイン側に API (Application Program(ming) Interface) を提供しようってわけだけど、そんなこと最初考えてなかったとかいうアフォさなので全 てのプラグインの先祖としてインターフェイスを宣言している PluginBase のクラス変数に 適当なメソッドを持ったオブジェクトを入れておけば、それにアクセスしてアレコレできん じゃねぇかなぁと。(継承したクラスとかでも全て共有されるし) 上の irc は class_eval の前で irc = self とかやってるやつ。だからプラグイン側でオーバーライドしてる on_join メソッド内で @@irc.notice(message, channel) とかやればメッセージが送れるハズ。って自分で書いてて思うけど意味わからん。 あぁ。もしや @@irc も外側ってことになってるのかな。