ごとけんです

教えて下さい。
インスタンス変数を持てない組み込みクラスに
数個だけインスタンス変数を持たせたいときは、
delegate を使うと良いのでしょうか? 

  require "delegate"

  foo = Array.new
  foo2 = SimpleDelegator.new(foo)

  class << foo2
    def a
      @a = 0 unless defined? @a
      @a
    end
  end

  print "foo2 << 1 ==> ", (foo2 << 1).inspect, "\n"
  print "foo2.size ==> ", foo2.size.inspect, "\n"
  print "foo2.a    ==> ", foo2.a.inspect, "\n"

これの結果は

foo2 << 1 ==> [1]
foo2.size ==> 1
foo2.a    ==> 0

となり期待通りです。
まず delegate.rb はこういう利用を意図して作られてると
理解してよろしいのでしょうか? 
ただこれだと、foo2.kind_of?(Array) => false です。
これはしかたないのですか? 

さらにこれだと foo2 の特異メソッドとして定義されてる
わけですが、複数のインスタンスを作れるようなクラスを
定義する事はできますか? delegate でできなければ
どうするのがスマートでしょうか? 

-- gotoken