2011-12-05 62 views
1

當前正在編寫一個類,我正在考慮將私有方法傳播到整個代碼中。我不想添加private行並複製下面的所有內容,我想在該類的頂部執行內聯聲明,例如private :foo, :barRuby - 私有方法的內聯聲明

但是,每當我嘗試聲明一個參數爲private inline的方法時,我會收到一條錯誤消息。例如,如果我有一個方法foo(bar, baz),並試圖用private :foo(bar, baz)聲明它是私有的,我會在兩個括號中得到錯誤消息,而不是kEND=

如果我試圖用private :foo聲明它,我會被告知在我的代碼中沒有foo這樣的方法。

我怎樣才能做到我想要做的事情而不會發生這些錯誤?

回答

8

TL; DRprivate :foo必須在之後出現該方法被定義。

private的參數應該是一個符號(例如,:foo一個呼叫(例如,foo(bar, baz))。

Ruby類聲明只是代碼:聲明是爲了編寫而編寫的。調用private :foo會檢查該類的foo方法。如果還沒有定義,那是錯誤的。

在以後RUBYS the def keyword will return the symbol of the method being defined,允許:

private def foo; ... ; end 

除非它是一個類的方法調用返回的方法的象徵,IMO的邊緣的情況下。