2011-07-15 75 views

回答

0

你可以做到這一點的方式,例如

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">] 

希望這有助於