Ruby - 私有方法的内联声明

时间:2011-12-05 23:36:13

标签: ruby access-specifier

目前正在编写一个类,其中我正在考虑私有的方法遍布整个代码。我想在类的顶部做一个内联声明,例如private,而不是添加private :foo, :bar行并复制粘贴它下面的所有内容。

但是,每当我尝试将参数声明为私有内联时,我都会收到错误消息。例如,如果我有方法foo(bar, baz),并尝试将其声明为private :foo(bar, baz),我会在两个括号上收到错误消息,而是期待kEND=。< / p>

如果我尝试用private :foo声明它,我会被告知在我的代码中没有foo这样的方法。

如果没有出现这些错误,我该如何做我想做的事?

1 个答案:

答案 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 除非是类方法调用,否则返回一个方法符号,一个边缘大小写。