From: Wakou Aoyama Date: 1998-10-31T22:00:15+09:00 Subject: [ruby-list:10538] Re: case with Class Sat, Oct 31, 1998 at 02:52:52PM +0900 において aamine@dp.u-netsurf.ne.jp さん曰く: > あ、それはわかっているのですが、それだからこそ、String === String > が成立した方が、比較するのに便利ではないかと考えたわけです。 > また同時に、String === "this is str"も真の方が便利なので > 両方併用したらどうか、と提案し また、もし String === Stringが成立すると > 都合が悪いことがあるのなら教えて欲しい、という質問をしたのです。で、 あ、なるほど。 $ ruby -e 'p Object === Object' true $ ruby -e 'p Module === Module' true $ ruby -e 'p Class === Class' true === の定義はあまり明確ではありません(ドキュメント化されていない部分が 多い)から、検討の余地はあると思われます。 今回の場合も、String クラスのドキュメントには === が無い。で、スーパー クラスである Object クラスを見ると、 self === other このメソッドはcase 文での比較に用いられます.デフォルトは ==と同じ 働きをします. そして、デフォルト以外ではどんな働きをするのかという記述はみあたりませ ん。(というか、ここの「デフォルトは」は削るべきなのかも。) という事は、String === String は true になるかと思えば、クラスの比較だ から、Class クラスを見るべきか、とそちらをみてもやはり無い。で、そのスー パークラスの Module クラスを見ても、記述無し。 さらにそのスーパークラスは Object クラスで、振り出しに戻る。 動作の検討とともに、ドキュメントの整備が必要ですね。 ----- class.c に記述が見当たらないと思ったら、object.c にあったんですね。 青山 和光 Wakou Aoyama