From: Ondrej Bilka Date: 2006-08-14T00:50:20+09:00 Subject: Re: Again Range=== bug On Sun, Aug 13, 2006 at 12:34:58PM +0200, dblack@wobblini.net wrote: > Hi -- > > On Sun, 13 Aug 2006, Ondrej Bilka wrote: > > >On Sun, Aug 13, 2006 at 10:25:03AM +0200, nobu@ruby-lang.org wrote: > >>Hi, > >> > >>At Sun, 13 Aug 2006 15:59:24 +0900, > >>Ondrej Bilka wrote in [ruby-core:08609]: > >>>Problem of discrete membership at Range#=== is that it returns unexpected > >>>result when treating float-like Classes. Class Time is represented as > >>>float so > >>>(Time.new...Time.new+5)===Time.new returns false. > >> > >>Really? > >> > >>$ ruby -ve 't = Time.new; p((t...t+5)===t+1)' > >>ruby 1.9.0 (2006-08-12) [i686-linux] > >>true > >> > >>And Time isn't float. > >> > >>>I choose Comparable#between? but I rather change its > >>>arguments to low.between?(value, high,excl) because now value > >>>doesnt know what range represents and can only guess that > >>>they are same type.(I dont know how frequently its used. ) > >> > >>Double dispatch may be considerable, but that change of > >>"between?" feels doubtful to me. > >> > >>-- > >>Nobu Nakada > >> > >Can someone simply cut my text and paste it??? > > irb(main):010:0> (Time.new...Time.new+5)===Time.new > => true > irb(main):011:0> RUBY_VERSION > => "1.8.4" > > >If you are lazy try > >t=Time.new > >(t...t+5.5)===t+2.3 > >which return false too > > irb(main):012:0> t = Time.new > => Sun Aug 13 06:34:02 EDT 2006 > irb(main):013:0> (t...t+5.5)===t+2.3 > => true > > > David > > -- > http://www.rubypowerandlight.com => Ruby/Rails training & consultancy > ----> SEE SPECIAL DEAL FOR RUBY/RAILS USERS GROUPS! <----- > http://dablog.rubypal.com => D[avid ]A[. ]B[lack's][ Web]log > http://www.manning.com/black => book, Ruby for Rails > http://www.rubycentral.org => Ruby Central, Inc. > My bad assumption that 1.9.0 is at sync with 1.8.4 puts RUBY_VERSION puts (Time.new...Time.new+5)===Time.new 1.9.0 false