[#47605] Rubyでも「private」イコール「非公開」? — Makoto Kuwata <kwa@...>
桑田といいます。
12 messages
2010/11/04
[#47606] Re: Rubyでも「private」イコール「非公開」?
— Yusuke ENDOH <mame@...>
2010/11/04
private constant 提案者の遠藤です。
[#47633] Mac OS X Snow Leopardのirbで日本語が入力できない — Tomohiko Hayashi <hayashi-t@...>
みなさま
7 messages
2010/11/17
[ruby-list:47615] Re: Rubyでも「private」イコール「非公開」?
From:
Yukihiro Matsumoto <matz@...>
Date:
2010-11-06 17:32:20 UTC
List:
ruby-list #47615
まつもと ゆきひろです
In message "Re: [ruby-list:47605] Rubyでも「private」イコール「非公開」?"
on Thu, 4 Nov 2010 12:37:23 +0900, Makoto Kuwata <kwa@kuwata-lab.com> writes:
|ここで質問なのですが、Rubyでも「privateなもの=非公開」という
|認識なのでしょうか。C++/Javaならこれが成り立つのはわかるのですが、
|Rubyにおける private method は、「レシーバを指定した呼び出しが
|できないメソッド」のことであり、公開・非公開とは違う話だと
|思ってました。
|実際、ヘルパーメソッドなどはprivateだけど絶賛公開していることも
|ありますし、逆に公開したくないんだけどレシーバつけて呼び出すから
|privateはつけられないようなメソッドもあります。
Rubyではprivateは公開・非公開ではなくて、「外」から直接呼び
にくいという意味です。
|上述のチケット (#2366) ではこの機能が導入されることが決定している
|ようですが、その場合、
|・定数 (クラス) に private をつけると、それは「非公開」を意味する
|・メソッドに private をつけると、それは「レシーバが指定できない」を意味する
|というようになり、privateが複数の意味を持つことになって混乱しそうな
|気がしました (ちょうどC言語での "static" のように)。
定数にprivateを付けると「::」で「外から」直接アクセスできな
くなります。「外から直接呼びにくい」という状態はメソッドの
privateとの類推が効くと思いますが、いかがでしょう。
個人的にはprivateだから「非公開」というのは言葉のアヤで、桑
田さんの仰るような意味ではなかったと思います。
まつもと ゆきひろ /:|)