From: Masatoshi SEKI Date: 2010-01-30T07:08:43+09:00 Subject: [ruby-dev:40248] Re: [Feature #2366] private constant 咳といいます。 On 2010/01/30, at 4:47, NARUSE, Yui wrote: > (2010/01/30 3:57), Masatoshi SEKI wrote: >>> 元の提案 [ruby-dev:39685] に書きましたが、「非公開というのは承知の上で >>> 敢えて使いたい」という要求を封じるものではありません。使うのに一手間 >>> かかるようになるだけです。一手間かけることで、自分が自分の足を撃とうと >>> していることを自覚してもらおうという狙いです。 >> >> うーん。そうするとそう宣言しなかったものは、どうなるんでしょう。 >> >> 「変えないって言ったのに変更しやがって!」と怒られるとか? > > 「変えない」と言った覚えはないわけですが、 > 公開APIである以上安易な仕様変更は慎む事が期待されます。 > そもそも、Rails 以降 Ruby でも仕様変更は控えることが期待されつつあります。 では「慎むっていったのに変更しやがって!」でしょうか。 private constantがあれば 「変更しやがって!でもprivate constantだから勘弁してやる」 みたいな感じ? どっちにしてもぎゃって思われそうだけどなあ。 > >>>> もしERBの実装が変わってしまってその書き換えをするコードが動かなくなって >>>> しまうのは、仕様が変わった、と納得してもらっても良いような気がします。 >>> >>> 納得してくれる人はいいんですけどね。rubyspec の様子を見ると、そういう >>> 牧歌的な期待は難しい気がしています。 >> >> えと、rubyspecというのはそういう変化をみつけてくれるセンサーのような >> ものではなく、なにかを規定するものなんでしょうか。 > > "spec" ですし。 > そもそも、RubySpec は誰のためのものかって、MRI のためじゃないんですよ。 > JRuby や Rubinius、MacRuby、あと IronRuby のためのものです。 > 彼らが実装すべき「Ruby」の言語仕様を規定するのが RubySpec です。 言語仕様だとしたらPure Rubyなライブラリの挙動を specに記述する必要あるのか疑問です。 だってそのままもってくれば同じように動くはずだもん。 あ。ちがうのかな。処理系が完全に移植されているかどうか 知りたいので、そのサンプルとしてライブラリの動きを 観察してるんでしょうかね。 > >> テストによって変化を見つけたら、変更したと宣言すればよいのではないの >> ですか? >> >> rubyspecに書かれたものは、修正することができなくなるということでしょうか? > > RubySpec に書かれたもの――というか、書かれうる物は公開 API ですので、 > それを修正する事は仕様変更、ひいては「Ruby」言語仕様の変更を意味し、 > Ruby 互換実装を作っている人々全てに追従を要求することになります。 > たとえ誰も使っていない API でも。 > > それでも仕様変更であると宣言するならばもちろん変更は可能です。 わかりました。ありがとうございます。