On 8/19/05, Vance A Heron <heron / jpl.nasa.gov> wrote:
> Hello,
> I'm having a problem using sort! to sort an array
> in which each element is an array.  I tried to generate
> a short example, and am getting different, but still
> puzzling behavior. In my real program, the error I get
> is:
> > bin/newr2r.rb:107:in `sort': comparison of Array with Array failed
> > (ArgumentError)
> 
> Any help understanding this would be appreciated.
> Thanks,
> Vance
> 
> Short example:
> ---
> #! /usr/bin/env ruby
> 
> a = [ ["Car", "Drive"], ["Boat", "Sail"], ["Plane", "Fly"] ]
> 
> puts "Original Array"
> a.each{|v| p v}
> 
> puts "\nSort to new array"
> b = a.sort{ |a, b| a[0] <=> b[0] }
> b.each{|v| puts "class(#{v.class}) #{v[0]}, #{v[1]}"}
> 
> puts "\nSort to self"
> a.sort!{ |a, b|  a[0] <=> b[0] }
> a.each{|v| puts "class(#{v.class}) #{v[0]}, #{v[1]}"}
> ---

Don't use a as the variable name inside the block.  You are
overwriting your original variable a when you do this.

a.sort {|x, y| ...} or something else...



Jason



> Output from run...
> SUN:quigon> sortprob.rb
> Original Array
> ["Car", "Drive"]
> ["Boat", "Sail"]
> ["Plane", "Fly"]
> 
> Sort to new array
> class(Array) Boat, Sail
> class(Array) Car, Drive
> class(Array) Plane, Fly
> 
> Sort to self
> class(String) 67, 97
> 
> 
> 
>