Заказ двух отдельных классов - PullRequest
0 голосов
/ 15 июля 2011

Как можно было бы заказать два разных класса? Итак, скажем, есть Class1 и Class2, которые оба имеют одинаковые поля, как бы я это сделал (Class1 + Class2) .asc (: field)?

1 Ответ

0 голосов
/ 15 июля 2011

Вы можете сделать это, например,

 class A
    attr_accessor :f1
 end

 class B
    attr_accessor :f1
 end

 a=A.new
 a.f1="a"

 b=B.new
 b.f1="b"

 arr = []
 arr << b << a
=> [#<B:0x6153e0c0 @f1="b">, #<A:0x55a517bd @f1="a">]

и вы можете сортировать по

arr.sort_by(&:f1)
=> [#<A:0x55a517bd @f1="a">, #<B:0x6153e0c0 @f1="b">]

является краткой формой

arr.sort_by {|x| x.f1}

даже вы можете использовать метод сортировки для указания asc, desc

>> arr.sort{|x,y| x.f1 <=> y.f1}
=> [#<A:0x55a517bd @f1="a">, #<B:0x6153e0c0 @f1="b">]
>> arr.sort{|x,y| y.f1 <=> x.f1}
=> [#<B:0x6153e0c0 @f1="b">, #<A:0x55a517bd @f1="a">]

надеюсь, это поможет

...