1
このような項目を並べ替えるにはより良い(同等の)方法がありますか?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]} ' –