メソッドキャッシュの件でひっかかっていた部分を取り除いて動くようにしてみた。なかなか快適に動く。
しかし、実際に既存のプログラムを動かしてみると、関数形式で呼び出していてもオーバーライドされることを期待しているコードはかなり多い。これらに全部「self.」を付けるというのもしんどい話だなあ。
うーん、関数として呼ばれる(外部に見えない)手続きという機能はぜひ実現させたいのだがな。今回の修正コードは別に捨ててもかまわないんだけど、アイディアは捨てたくない。
いっそ「_local」という名前のメソッドはローカル(スーパークラスも見ない、オーバーライドもされない)ということにするか。これでも動かなくなるコードはあるが(rssとか動かない)、「private全部捨て」よりはマシか。
もうちょっと考えてみよう。
先日来、復刊希望をウォッチしているが、なかなか票が伸びない。明示的に宣伝するのにも少々ためらいがあるが、いい本が手に入らないのも悲しいことだ。
共感して下さる方は投票を。
投票しても復刊されるとは限らないんだけど、希望にはなる、かも。
localというvisibilityを導入して、関数形式でメソッドが呼ばれたときは「localメソッドを探索(そのクラスのみ)→見つからなかったらその他のメソッドを探索」というのは…効率が悪くなるから駄目でしょうか?
効率についてはメソッドキャッシュがあるんで多分大丈夫なのですが、どのメソッドが呼ばれるのかひと目で分からなくなりそうな不安があります。
でも、試してみるかな。
賛同していただき嬉しい限りです。
でも、「_」っていうprefixはあんまりよくないみたいです。
なんかいいのがあるかなあ。