From: NISHIKAWA Date: 2000-08-22T01:29:20+09:00 Subject: [ruby-list:24329] Coerce between Range and Boolean こんばんは。にゃす@3web です。 報告させていただきます。 Rangeとtrue/falseの間の比較をするとき右辺と左辺を入れ替えるとcoerceで転けて エラーが出ます。ruby-1.4.5/1.4.6といつのだかわからない1.5(すみません。 メモしとくの忘れました)で出ました。 これはOK。 $ ruby -e'true === (1..3)' これがNG $ ruby -e'(1..3) === true' (略) `<=': true can't be coerced into Fixnum (TypeError) こうなるので、下のスクリプトが転けます。 (when 1..3を最後に持ってくるとOKですが、あまり楽しくないです) val=false case val when 1..3 ... when false ... when true ... end そういや、昔、 $ruby -e'a=Object.new; 0xffffffff==a' でcoerceが転けるって話を出して直していただきました。(ありがとうございます) coerceってやはりややこしい仕組みなんですねえ... (自分でパッチを作るには先がかなり長いので、また報告だけにさせていただきます) #MLに出さずにRuby Bug Tracking Systemに出した方がいいですか? でもなんか、他にもあるような気がしてきました... __ ☆ にゃす @3Web ★ PGP指紋 : 24 DC 99 F5 3E 4A C2 07 AA 21 B4 0F 96 60 34 1D ※ PGP公開鍵: http://pgp.nic.ad.jp:11371/pks/lookup?op=get&search=0x90E91DC5