From: okkez Date: 2008-12-16T20:22:23+09:00 Subject: [ruby-dev:37464] Re: [Bug #891] MiniTest::Assertions#assert_instance_of should use Object#instance_of? okkez です。 # Ruby のリビルドをしてる間にるびきちさんがフォローしてくださってますが # さっきビルドした Ruby で確認してみました。 2008/12/16 17:33 Yukihiro Matsumoto : > まつもと ゆきひろです > > In message "Re: [ruby-dev:37458] [Bug #891] MiniTest::Assertions#assert_instance_of should use Object#instance_of?" > on Tue, 16 Dec 2008 16:26:38 +0900, okkez _ writes: > > |タイトルの通りなのですが、MiniTest::Assertions#assert_instance_of の実装がおかしいと思います。 > |Module#=== ではなくて Object#instance_of? を使用するべきではないでしょうか? > > このふたつは同じ働きですが、「おかしい」というのはどういう意 > 味でしょうか。「より良く意図を表現する」とかいうような意味で > あれば、バグとは言えないような。 > 以下のような実行結果になるからです。 Object#instance_of?(klass) はレシーバが klass の直接のインスタンスになっている 場合だけ true を返します。 >> RUBY_DESCRIPTION => "ruby 1.9.1 (2008-12-16 revision 20782) [i686-linux]" >> String === 'a' => true >> Object === 'a' => true >> 'a'.kind_of?(String) => true >> 'a'.kind_of?(Object) => true >> 'a'.instance_of?(String) => true >> 'a'.instance_of?(Object) => false -- okkez okkez000@gmail.com