ruby - sort an array of ranges -
how sort array of ranges
ranges = [range.new(0, 3, true), range.new(3, 5, true), range.new(5, 7, true), range.new(7, 9, true), range.new(9, 11, true), range.new(11, 100, true)] ranges.sort => argumenterror: comparison of range range failed (irb):7:in `sort' (irb):7 /users/praveena/.rvm/rubies/ruby-2.0.0-p247/bin/irb:16:in `<main>'   but when try
2.0.0p247 :022 > (3...4) <=> (4...8) => nil 2.0.0p247 :023 > (3...4) <=> (1...2) => nil   am missing ?
it seems range have implementation <=>, not complete. lets check:
> range.new(3,4) <=> range.new(3,4) => 0 # seems correctly identify when 2 equals  > range.new(3,4) <=> range.new(4,4) => nil # seems fails fail when both different!   this method defined in range because defined on object class(!!!), every object has method defined, doesn't means works. implementation range default one. lets check this:
# lets define dummy class class end => nil  # , create object = a.new => #<a:0x9b1d998>  # can correctly identify when equal <=> => 0  # invalid answer when not equal! <=> 1 => nil   at point, should understand happening in code.
it totally understandable range not have canonical <=> method because there no mathematical definition greater range (that know), neither common sense definition.
Comments
Post a Comment