0

次のような動的に生成されたネストされた名前空間があります。

class A
  class B
    class C
      ...
    end
  end
end

Cによってクラスに手動でアクセスできるA::B::Cため、存在するため、ジェネレーターが機能します。ただしObject.const_get "A::B::C"、「間違った定数名」エラーが発生します。面倒なループなしでどうにかして動的にアクセスできますか?

4

1 に答える 1

3

ループなし?わからない。

これに対する私の解決策はここにありますが、それはあなたの名前をループします:

class A
  class B
    class C
    end
  end
end

c = "A::B::C".split("::").inject(Object) { |n,c| n.const_get c }
p c

A::B::C

ここであなたはそれが実際に動いているのを見ることができます

于 2012-10-31T16:34:33.643 に答える