From: matz@... (Yukihiro Matsumoto) Date: 2001-07-28T23:01:12+09:00 Subject: [ruby-dev:14153] Re: private instance variable と _dump/_load まつもと ゆきひろです In message "[ruby-dev:14151] Re: private instance variable と _dump/_load" on 01/07/28, Kazuhiro NISHIYAMA writes: |[ruby-dev:13994]のあたりにある「privateなインスタンス変数を |明示的に取り出すreflection API」っていうのを「privateな」 |インスタンス変数専用ではなく、インスタンス変数汎用にして | |Object#get_instance_variable('Foo::foo') |Object#set_instance_variable('Foo::foo', 'value') | |みたいな感じでアクセスできればいいかな、と思ったんですが。 石塚さんはすでに[ruby-dev:14128]で obj.private_ivars(mod = obj.type) obj.ivar_get(ivarname, mod = obj.type) obj.ivar_set(ivarname, mod = obj.type) を提案してますね(おや、setにvalueがないな)。 で、西山さんの案の場合、"Foo::foo"でFooクラスのプライベート インスタンス変数fooにアクセスするという風に読めるんですが、 この場合、 * プライベートでないインスタンス変数をアクセスする場合には なにを名前に指定するのか * 通常の方法でプライベートインスタンス変数にアクセスできる のか * できるなら、その場合の記法はどうなるのか * クラス名、モジュール名のパスはどう決まるのか * 名前の無いクラスやモジュールの場合どうなるのか ということについても考察していただけると実現に近くなるのでは ないかと思います。 でも、一連の議論で(Rubyには名前のないクラスやモジュールがあ るので)Python方式よりもただ単に慣習を導入するだけでも良いの かもと思いはじめているのは正直なところです。 まつもと ゆきひろ /:|)