豊福@パパイヤです。 原さん > 原理的には TheArray というただ一つの Array オブジェクトが > あれば作れます。つまりこれをリニアなメモリだと考えることで、 > 直列に並べれば複数の配列を格納できるからです。GC だってユー > ザーがコントロールできるかもしれません。ということは、TheArray > を使って Array と同じ機能を持つクラスでありながら、Array は > 要素を参照してこっちはしていないとは言えないのではないか。も > しかすると隠れオブジェクトとして実際の Array の実装に TheArray > みたいなのが使われている可能性だって無いわけではない。 なるほど。確かに私の考えだとこの実装ではすべての Array オブジェクトは TheArray しか参照していないことになりますね。 実装に依存しない well-defined な「参照」を考えるとしたら 参照の参照もやはり参照にならないとダメかな。そうすると 最初の例では foo は "obj1","obj2" を参照していることになり ますね。(これは e() が TheArray[0] を返すからではなく e() が参照している TheArray が "obj1","obj2" を参照して いるから) def foo(x); x; end こっちは前のメールにも書いたとおり引数をつたってきただけで 何も参照していないと思います。 --- 豊福@パパイヤ unbound / papaya.juice.or.jp toyofuku / juice.or.jp