前田です。 In message "[ruby-list:7020] Re: lib/date.rb" Tadayoshi Funaba <tadf / kt.rim.or.jp> wrote: |>クラスメソッドは隠せませんからメソッドにしてprivate宣言する |>のが正しいでしょうか? | |クラスメソッドの下請をどう考えればいいかということなんですけれど。 |# ruby ではそういったことはあまり気にしないのが正解? クラスメソッド(クラスの特異メソッド)の下請けだけならクラスメソッド をprivateにすればよいです。 # まつもとさんがクラスメソッドは隠せない、と書いたのは、クラス # メソッドをprivateにすると、インスタンスメソッドから呼べない # という意味だと思います。 具体的には class Foo def Foo.bar; ... end private_class_method :bar ... end あるいは、 class << Foo def bar; ... end private :bar ... end とします。 クラスメソッドとインスタンスメソッドの両方で使う場合は、 class Foo def bar; ... end module_function :bar private_class_method :bar ... end とするのがよいかもしれません。 これが気持ち悪ければ、 class Module def private_function(*methods) module_function(*methods) private_class_method(*methods) end end としておけば、 private_function :bar ですみますね。 -- 前田 修吾