루비에서는 상수 조회가 중첩의 영향을 받고 메소드가 중첩을 유지합니다. 예를 들어Ruby에서 메소드의 중첩을 찾으려면 어떻게해야합니까?
, I는 이러한 모듈이있는 경우 : [Foo, B]
의 중첩을 갖는
module Foo
module ::A
Module.nesting #=> [A, Foo]
def Foo.a
X
end
end
end
Foo.a #=> 1
및 그 방법 Foo.b
: I가 [A, Foo]
중첩되어있는 방법 Foo.a
을 정의 할 수
module A
X = 1
end
module B
X = 2
end
module Foo
end
을 :
module B
module ::Foo
Module.nesting #=> [Foo, B]
def Foo.b
X
end
end
end
Foo.b #=> 2
Foo::X = 3
Foo.a #=> 1 <- still resolves to A::X
Foo.b #=> 3 <- now resolves to Foo::X
하지만 어떻게 주어진 방법의 중첩을 결정합니까 : 나는 Foo::X
를 정의 할 경우3210의 차이는 분명하게?
솔직히 말하면, 나는 왜'Foo.a'와'Foo.b'가 정의되어 있고 main에서 사용 가능한지조차 확신하지 못합니다. –
@EricDuminil':: Foo' 때문에 최상위 상수를 나타냅니다. – Stefan
최상위 모듈이 다른 모듈에 중첩 될 수 있다는 사실을 인식하지 못했습니다. – akuhn