2012-05-12 3 views
0

Ruby 객체 모델에 대해 더 자세히 배우기 시작했으며 메소드 발견 방법의 흐름을 이해하려고합니다.Ruby 메서드 조회가 클래스의 맨 아래부터 시작하여 위로 올라가거나 위에서 아래로 이동합니까?

제가 이해하는 것처럼 객체는 자체 클래스 (오른쪽으로 이동)를 검사하여 메소드를 검색하고 거기에 메소드가 없으면 상위 계층으로 올라갑니다.

내가 혼란스러워하는 것은 ... 수업을 들여다 보면 각 방법을 아래에서 위로, 위에서 아래에서 읽습니까?

저는 전을 생각하고 있습니다. 그러나 이것이 사실이라면, 프로그램이 어떻게 읽혀지고/해석되는지에 대해 항상 이해했던 것에 반 직관적으로 생각합니다. 위로부터 아래로.

누군가 내 이해를 확인할 수 있습니까? 감사.

+0

루비는 메소드 선언을 포함하여 위에서 아래에서 실행 않습니다. 주어진 이름을 가진 하나의 메소드 만있을 수 있으므로, 응답 상태로 나중의 선언은 이전의 선언보다 우선합니다. 메서드가 호출 될 때 "상향식"/ "상향식"이 없으며 "이 메서드가 있습니까? 아니면 계속 살펴야합니까?" –

+0

예,하지만 통역사는 절차 적 역학에 대해 위에서 아래로 읽습니다. 같은 이름의 메소드가 발견되면 마지막 메소드를 리턴합니다. 이것이 내가 그 해답을 이해 한 방법이다. – Nathan

+0

그들은 내가 말한 것이다. 그러나 메서드가 호출 될 때마다 클래스는 읽히지 않으며 파일로드 시간에 한 번 읽습니다. –

답변

3

나중에 선언은 이전의 것들을 무시 -

class Foo 
    def hello 
    'hello first' 
    end 

    def hello 
    'hello second' 
    end 
end 

f = Foo.new 

puts f.hello # hello second 
+0

오, 그게 더 좋은 방법입니다. 고맙습니다. – Nathan

관련 문제