Есть ли более удобный (и эквивалентный) способ сортировки таких элементов?Ruby: Есть ли лучший способ написать следующий метод сортировки?
items.sort! do |p1, p2|
if (p1.foo == p2.foo)
if (p1.bar == p2.bar)
if (p1.moo == p2.moo)
p1.wow <=> p2.wow # Ascending order
else
p2.sam.moo <=> p1.sam.moo # Descending order, 2 levels attribute
end
else
p2.bar <=> p1.bar # Descending order
end
else
p1.foo <=> p2.foo # Ascending order
end
end
Это действительно хорошо! Большое спасибо! –
Для немного меньшего дублирования вы можете написать 'items.sort_by! {| p | [p.foo, p.bar, p.moo, p.sam.moo]} 'если они все в порядке возрастания. –
@Ben Alpert: а если нет, но это цифры, вы можете сделать sort_by! {| p | [p.foo, - p.bar, - p.moo]} ' –