2011-12-05 2 views
1

현재 개인용으로 고려중인 메소드가 코드 전체에 퍼져있는 클래스를 작성하고 있습니다. private 행을 추가하고 그 아래에 모든 내용을 복사하여 붙여 넣는 대신 클래스 맨 위에서 인라인 선언 (예 : private :foo, :bar)을 수행하고 싶습니다.Ruby - 개인 메소드의 인라인 선언

그러나 개인 인라인 매개 변수가있는 메서드를 선언 할 때마다 오류 메시지가 나타납니다. 예를 들어, 내가 foo(bar, baz) 메소드를 가지고 있고 private :foo(bar, baz)으로 그것을 private으로 선언하려한다면, 두 개의 괄호에 kEND=을 대신 할 것으로 예상되는 오류 메시지가 나타납니다.

private :foo으로 선언하려고하면 코드에 foo과 같은 메서드가 없다는 메시지가 나타납니다.

이러한 오류가 발생하지 않고 어떻게 할 수 있습니까?

답변

8

TL; DRprivate :foo은 이후에 으로 나타나야합니다. 1

private의 인수는 기호 (예를 들면, :foo) 하지 호출 (예를 들면, foo(bar, baz)) 2이어야한다.

Ruby 클래스 선언은 코드 일 뿐이며 작성된 순서대로 실행됩니다. private :foo을 호출하면 클래스가 foo 메서드를 검사합니다. 아직 정의되지 않은 경우 오류입니다. 허용 이후 Rubys the def keyword will return the symbol of the method being defined에서

1 :

private def foo; ... ; end 

2이 방법 심볼 복귀 클래스 메소드 호출 IMO 에지 않는 경우이다.

관련 문제