From: Yukihiro Matsumoto Date: 2007-02-15T11:41:10+09:00 Subject: [ruby-dev:30347] Re: class local instance variable (was: Re: exception on Singleton) まつもと ゆきひろです In message "Re: [ruby-dev:30345] class local instance variable (was: Re: exception on Singleton)" on Thu, 15 Feb 2007 11:19:28 +0900, SASADA Koichi writes: | 個人的には、なるべくなら互換性があったほうがいいなぁ、と思っています。 |この変更で幸せになる人がどれくらいいるのか、あんまり想定していないので 「なるべく互換性」という点には反対しませんが、互換性のために 設計をゆがめるのはもっとダメだと思っています。 | ところで、test/unit のテストで、テスト時に @_result というインスタンス |変数へ、テスト用に作った派生クラスからアクセスしようとして失敗していま |す。何か回避策はないかと思って *_eval を考えてみたんですが、思いつきませ |んでした。クラスローカルインスタンス変数へアクセスするためのリフレクショ |ンメソッドは設けるんでしょうか。 obj.instance_variable_get(:@_foo/Foo)でFooクラスのクラスロー カルインスタンス変数にアクセスできます。 | とりあえず、@_result を @v_result のようにして解決したんですが、テスト |のために可視性(?)を広げるのは本末転倒だなぁ、という気がしています。 もともとC++的protectedなものを(名前を変えて)protectedに戻し たのであれば「可視性を広げた」とは言わないんじゃないかと思い ます。もともとクラスローカルにしたくて@_resultという名前を使っ てたわけではないでしょうから。