On Fri, Jul 1, 2011 at 12:55 PM, Iki Baz Castillo <ibc / aliax.net> wrote:
> 2011/7/1 Iki Baz Castillo <ibc / aliax.net>:
>> I expected that the following could work:
>>
>>    
>>
>> but it generates:
>>
>> [kk1, kk2, kk3, kk4]
>>
>> so obviously it does not work. I'm not very used to Enumerable.sort_by
>> method, any tip please?
>
> Maybe it would be better to use "class KK" rather than an struct, and
> then define <=> method for KK class (and include Enumerable module)?

You can do

array.sort_by {|e| [e.a, e.b]}

But you can of course define <=> for a Struct class as well

KK = Struct.new :a,:b do
  include Comparable

  def <=>(o)
    cmp = a <=> o.a
    cmp == 0 ? b <=> o.b : cmp
  end
end

Kind regards

robert

-- 
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/