[ruby-list:48561] Re: ruby 1.9.3p0 の private_constant

From: Kenichi Kamiya <kachick1@...>
Date: 2011-12-03 14:23:04 UTC
List: ruby-list #48561
神谷です。


2011年12月3日18:00 Yusuke Endoh <mame@tsg.ne.jp>:
> バグです。修正します。ありがとうございます。

こちらこそありがとうございます。
念頭に置いて、次のリリースを待ちます。

>
> 私もどちらもありうると思いますが、private にしなかったのは意図的です。
> private や module_function より後から入ったと思われる private_
> class_method がその記法をサポートしていなかったので、最近はむやみに
> スコープに状態を持たせない流儀なのかな、と考えたためです。
>
>  class Foo
>    private_class_method
>
>    def self.foo
>    end
>  end
>  Foo.foo # 呼べる
>
> 両方共サポートすべき!と思われるなら、チケットをきってください。

なるほど、たしかにprivate_class_methodの挙動は把握していませんでした。
納得の理由です。
強く望むまではまだどちらのメソッドも使い込んでいないので、もう少し試してみようと思います。

>
> 引数 0 個の時に何も言わないのも private_class_method たちと同じです
> が、不親切すぎる気もするので、とりあえず警告を出すようにしましょうか。
>
>  $VERBOSE = true
>  module Foo
>    public_class_method
>    public_constant
>  end
>
>  -:3: warning: public_class_method with no argument has no effect
>  -:4: warning: public_constant with no argument has no effect
>

これは非常に嬉しいです。
「引数0が意味を持たない場合はArgumentErrorか警告」ということであれば、自分の中でしっくりきます。

丁寧な御回答を頂き、有難うございました。

-- 
神谷 健一

In This Thread