2011-01-07 7 views

답변

3

당신은

[p1.foo, p1.bar, p1.moo, p1.sam.moo] <=> [p2.foo, p2.bar, p2.moo, p2.sam.moo] 

배열이 바로 문자열처럼 비교 비교를 위해 배열에서 객체를 설정할 수 있습니다 : 첫 번째 다른 요소에 의해.

일부 비교에서 역 색인 (p2.bar <=> p1.bar)이 오타가 아닌 경우 배열 요소도 전환해야합니다.

아니면이 경우 클래스

def <=>(p2) 
    ... 
    end 

에서 비교 연산자를 대체 할 수 있습니다, 당신은 items.sort! 아무것도 통과 할 필요가 없습니다.

+0

정말 좋습니다! 고마워요! –

+1

약간 더 적은 중복을 위해'items.sort_by! {| p | [p.foo, p.bar, p.moo, p.sam.moo]}'모두 오름차순입니다. –

+1

@Ben Alpert : 만약 그들이 아니지만 숫자라면, 당신은'sort_by! {| p | [p.foo, -p.bar, -p.moo]}' –

관련 문제