原です。 > 青山です。 > > b = Object.new > > def b.[](i); i+8; end > > > > とした場合、a[0] == b[0], a[1] == b[1] ですが、いくら > > なんでも b が 8 と 9 を参照しているとは言い難い。そん > > な事を言えば b は少なくとも全ての Fixnum を参照してい > > ると言わなくてはならなくなる。 > 通常は、b.[](i) が呼ばれた段階で i+8.1 が評価され、新たなオブジェクト > が生成されます。これは、メソッドとして定義しているとかは関係なく、 > i + 8.1 が評価された段階で新たなオブジェクトを生成するからです。 その件は理解しています。ここでは a と b が同じオブジェクトを参照 しているかどうかが問題であるのではなく、b はオブジェクトを参照し ていると言うべきか否かという事なんです。極端な話、 c = Object.new def c.[](x); x; end とするとき、c はすべてのオブジェクトを参照していると、そう呼んで良 いかどうか。