を何らかの理由でクラスUpper
のインスタンスがクラスSuper
のインスタンスの内部にアクセスする必要がある場合は、それはあなたが設計上の欠陥があることを意味します。
可能な方法の1つは、へSuper
ニーズがゲッター経由変数を公開し、次のようになります。
module Test
class Super
def initialize(name)
@name = name
end
def name
@name
end
end
end
は今、あなたはTest::Super.new("my name").name
でname
を取得する可能性があります。
別の可能性はUpper
あり、実際にSuper
のサブクラスです:
class Upper < Super
def test
puts @name
end
end
Upper
がSuper
から実装を導出するので今Test::Upper.new("my name").test
は、"my name"
を印刷します。また
、一つは外側のモジュールレベルでインスタンス変数を使用する可能性があります:
module Test
def self.name=(name)
@name = name
end
def self.name
@name
end
class Super
def initialize(name)
Test.name = name
end
end
class Upper
def test
puts Test.name
end
end
end
これを印刷します:
▶ Test::Super.new("my")
#⇒ #<Test::Super:0x0055dae57fe390>
▶ Test::Upper.new.test
#⇒ "my"
何変数あなたは何をクラス間で共有したいですか? – sawa
別の 'Test :: Super'インスタンスがある場合、 'a2 = Test :: Super.new( '私の他の名前')'、 'b.test()'は何を返しますか? – Stefan