私は、単一のクラスを継承するいくつかのクラスがあります。コンソールでインスタンス内のクラス変数にアクセスできますか?
class Bravo << Alpha
class Charlie << Alpha
アルファは、いくつかのクラスレベルの変数を持っています
class Alpha
@@terms
def initialize
...
@@terms ||= load_terms
end
end
OK、すべてが今のところ大丈夫です。しかし、トラブルシューティングのためにコンソールからクラスレベルの変数にアクセスしたいと思います。これは可能ですか?私が試した:
# inst is an instance of Bravo for example
inst.class.superclass:terms
[email protected]@terms
inst.class.superclass[:terms]
本当に私は質問への答えを見つけることができませんでしたので、ちょうどストローでつかんで、仕事にそれの任意のを期待していませんでした。私は、クラス変数が経由してあることを確認しました:OK、私は彼らがあることがわかります
>> inst.class.superclass.class_variables
=> [:terms]
が、直接レールコンソール経由でそれらにアクセスする方法はありますか?
を '用いることであろうことは:@@ terms'ていますが、とにかく1を取得します。 –
@Sergio ok、それはうまくいっていますが、それは複雑です。 Rubyで何かを実行すると、それは本当に複雑です - 通常はとても簡単です。 C#では、スーパークラスからの変数またはクラスからの変数へのアクセスに実際には違いはありません。 :/ – jcollum
@jcollum:まあ、それはC#ではない:)答えを更新しました。 –