お世話になっております。A.中村です。

配列的添え字付きの属性ってのを
(delphiっぽく(笑))やってみたくなりました。

class A
  attr :x
  def initialize
    @x=Object.new
    def @x.[](idx)
      p [idx] #添え字で何らかのアクションを起こす
    end
    def @x.[]=(idx,v)
      p [idx,v] #添え字と与えられた値で何らかのアクションを起こす
    end
  end
end

a=A.new
a.x[1]=123	=>[1, 123]
a.x[1]		=>[1]

こんな風に@xというオブジェクトを介在させれば
望んだものが出来るんですが、@xを作らずにいきなり
Aのメソッドとしてこういうものを書くことは、
Rubyでは可能でしょうか?


あと、このままだと@xからaへの参照も
持てないっすね。

class A
  attr :x
  def y; 456; end
  def initialize
    @x=Object.new
    def @x.p=(a)
      @p=a
    end
    @x.p=self
    def @x.[](idx)
      p [idx]
      p @p.y
    end
    def @x.[]=(idx,v)
      p [idx,v]
      p @p.y
    end
  end
end

a=A.new
a.x[1]=123
	=>[1, 123]
	=>456
a.x[1]
	=>[1]
	=>456

なんかクドイなぁ。
直接Aのメソッドとして書けれればこんな悩みはないのだけど。