目前正在编写一个类,其中我正在考虑私有的方法遍布整个代码。我想在类的顶部做一个内联声明,例如private
,而不是添加private :foo, :bar
行并复制粘贴它下面的所有内容。
但是,每当我尝试将参数声明为私有内联时,我都会收到错误消息。例如,如果我有方法foo(bar, baz)
,并尝试将其声明为private :foo(bar, baz)
,我会在两个括号上收到错误消息,而是期待kEND
和=
。< / p>
如果我尝试用private :foo
声明它,我会被告知在我的代码中没有foo
这样的方法。
如果没有出现这些错误,我该如何做我想做的事?
答案 0 :(得分:9)
<强> TL;在定义方法后, private :foo
必须出现。
private
的参数应该是一个符号(例如,:foo
),不是一个调用(例如,foo(bar, baz)
) 1 。
Ruby类声明只是代码:语句按照它们编写的顺序执行。调用private :foo
会检查班级中的foo
方法。如果尚未定义,那就是错误。
针对更新的Ruby
进行了更新现在def
关键字returns the symbol of the method being defined,允许:
private def foo; ... ; end
1 除非是类方法调用,否则返回一个方法符号,一个边缘大小写。