클래스 Super
의 인스턴스의 내부에 액세스 할 수있는 클래스 Upper
필요 어떤 이유로 인스턴스를 들어, 당신이 설계 결함을 의미합니다.
한 가지 가능한 방법은 에 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
지금
Test::Upper.new("my name").test
가
"my name"
을 인쇄합니다 :
또 다른 가능성은 Upper
실제로 Super
의 서브 클래스입니다. 또한
, 하나는 바깥 쪽 모듈 수준에서 인스턴스 변수를 사용할 수 있습니다 :
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 ('My other name')','b.test()'는 무엇을 반환할까요? – Stefan