2011-12-05 14 views
1

現在、プライベートにすることを検討しているメソッドがコード全体に広がっているクラスを作成しています。 private行を追加し、その下にすべてをコピーして貼り付けるのではなく、クラスの先頭にインライン宣言(たとえばprivate :foo, :bar)を挿入したいと考えています。Ruby - プライベートメソッドのインライン宣言

しかし、プライベートインラインのパラメータを持つメソッドを宣言しようとすると、エラーメッセージが表示されます。たとえば、私がメソッドfoo(bar, baz)を持っていて、それをprivate :foo(bar, baz)で私的に宣言しようとすると、代わりにkEND=が必要であるという2つのかっこのエラーメッセージが表示されます。

private :fooで宣言しようとすると、コードにfooというようなメソッドがないと言われます。

これらのエラーが発生しないようにするにはどうすればよいですか?

答えて

8

TL; DRprivate :fooは、の後にと表示する必要があります。

privateの引数は、シンボル(例えば、:foo)、ないコール(例えば、foo(bar, baz))であるべきです。

Rubyクラスの宣言は単なるコードです:ステートメントは記述された順序で実行されます。 private :fooを呼び出すと、クラスがfooメソッドをチェックします。まだ定義されていない場合はエラーです。

private def foo; ... ; end 

をそれがIMO方法シンボルを返すクラスメソッド呼び出し、エッジケースのない限り:せるthe def keyword will return the symbol of the method being defined後ルビーズで

、。

関連する問題