From: aamine@... Date: 1998-10-30T22:22:47+09:00 Subject: [ruby-list:10521] Re: case with Class こんにちは。あおきです。 in mail of [ruby-list:10483] Re: case with Class ruby-list@netlab.co.jp wrote: >ええ,caseは演算子 === を使って比較しますが, > >Class#=== > >は一致ではなく,kind_of?だからです.つまり > >case 'This is string' >when Array then p "array\n" >when Integer then p "integer\n" >when String then p "string\n" >else p "Don't match\n" >end > >は望み通りの結果になると思われます. なるほど、良く分かりました。 …て、実は[9589]にほとんど同じ質問が ありましたね。(ruby-devにもあった…)すみませんでした。 ただ、まだなんとなく釈然としません。 このような仕様であるのは納得したし、実用上はこれで問題ないのですが、 なぜStringクラスオブジェクトは自分自身にマッチしないのでしょうか。 別の言い方をすれば、なぜ String === String ----> false なのか、ということですが。 kind_of? をチェックしたあとに、== でのチェックを行うというわけには いかないのですか。これをやると困る、という「積極的な否定理由」が なにかあるのでしょうか。 -------------------------------------------------------------------- あおきみねろう@一橋大学 Mail to: aamine@dp.u-netsurf.ne.jp