From: gotoken@... (GOTO Kentaro) Date: 2000-08-25T07:24:57+09:00 Subject: [ruby-list:24475] Re: Coerce between Range and Boolean ごとけんです In message "[ruby-list:24453] Re: Coerce between Range and Boolean" on 00/08/24, Yukihiro Matsumoto writes: >| * 現状のママ >| * coerce でエラーを起こしたら false を返す >| * Range#=== を Enumerable#include? にする >| >|くらいが思い付きますが、現状のママと言うのも悪くない気がしま >|す。というのは、=== が == ではないクラスにはRegexpとModuleが >|あって、特にRegexpは似た状況なのですが、かといって、 >|Regexp#=== は =~ のaliasなので // =~ true が例外じゃないのも >|なんか気持ち悪いです。 > >なんとなく現状のままかなあと思ってます。 Ruby の case が C の switch が便利になったモノだとすれば、ク ラスが違う場合に対処できてもいいんやも、とも思ったりします。 Range と Regexp の === で rescue TypeError; return fail する ようにして、マズいことが思い付かないというのもその理由です。 >|# それよりは、列なのか範囲なのかはっきりしないRangeの方が気 > >やっぱ「範囲」なんじゃないかなって思います。eachとかは使い勝 >手のためその範囲内の列を作っている(とみなす)ってことでどうで >しょう。 ええ、ぼくもそういうことでなんとなく納得することにしてます。 ただ、(1..10 === 0.1) && !(1..10).include?(0.1) が成り立つの はなんか気持ち悪いんですよ。じゃぁ include? を range_eqq で 定義すればいいかというと、それもなんか意外な気がするし。 -- gotoken