From: Yukihiro Matsumoto Date: 2010-11-07T02:32:20+09:00 Subject: [ruby-list:47615] Re: Rubyでも「private」イコール「非公開」? まつもと ゆきひろです In message "Re: [ruby-list:47605] Rubyでも「private」イコール「非公開」?" on Thu, 4 Nov 2010 12:37:23 +0900, Makoto Kuwata writes: |ここで質問なのですが、Rubyでも「privateなもの=非公開」という |認識なのでしょうか。C++/Javaならこれが成り立つのはわかるのですが、 |Rubyにおける private method は、「レシーバを指定した呼び出しが |できないメソッド」のことであり、公開・非公開とは違う話だと |思ってました。 |実際、ヘルパーメソッドなどはprivateだけど絶賛公開していることも |ありますし、逆に公開したくないんだけどレシーバつけて呼び出すから |privateはつけられないようなメソッドもあります。 Rubyではprivateは公開・非公開ではなくて、「外」から直接呼び にくいという意味です。 |上述のチケット (#2366) ではこの機能が導入されることが決定している |ようですが、その場合、 |・定数 (クラス) に private をつけると、それは「非公開」を意味する |・メソッドに private をつけると、それは「レシーバが指定できない」を意味する |というようになり、privateが複数の意味を持つことになって混乱しそうな |気がしました (ちょうどC言語での "static" のように)。 定数にprivateを付けると「::」で「外から」直接アクセスできな くなります。「外から直接呼びにくい」という状態はメソッドの privateとの類推が効くと思いますが、いかがでしょう。 個人的にはprivateだから「非公開」というのは言葉のアヤで、桑 田さんの仰るような意味ではなかったと思います。 まつもと ゆきひろ /:|)