------ art_654_4189267.1143619743658 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-Disposition: inline On 3/29/06, vsv <gm.vlkv / gmail.com> wrote: > > Could someone explain me, please, why Range with one element is > iterated inconsistently when this element is empty string: > > $ irb --simple-prompt > >> ('a'..'a').to_a > => ["a"] > >> (1..1).to_a > => [1] > ## but: > >> ("".."").to_a > => [] > >> ("".."").each{|s| puts 'Inside'} > => "".."" > Why to_a returns empty [] and each block never executed? > Is it bug or feature? > Any reasonable explanation? > > thanks > Sergey > > > Sergey this looks like a bug to me as far as I recall the definition of a range, "" is part of the range ("".."") I verified with irb and ("".."") === "" returns true "" <=> "" returns 0 as expected, "".succ => "" which is not quite conclusive for me, but see below anyway it seems inconsistent that ("".."").to_a.include?("") returns false while ("".."") === "" returns true No I have mimicked the bahvior with class NilClass def succ; nil; end def <=>(other); 0; end end Guess what (nil..nil).to_a returns ?? [nil] as expected the behavior you described clearly seems to be a bug. Regards Robert -- Deux choses sont infinies : l'univers et la bóŐise humaine ; en ce qui concerne l'univers, je n'en ai pas acquis la certitude absolue. - Albert Einstein ------ art_654_4189267.1143619743658--