rubyでオブジェクト配列をソートするカスタムブロックメソッドを指定したい場合、2つのプロパティを評価します。しかし、Googleでの多くの検索の後、私は< =>演算子なしではどの例にも着くことができませんでした。rubyでのカスタムソートメソッド
これは私が何をしたいです: は、B対比較:
if a.x less than b.x return -1
if a.x greater than b.x return 1
if a.x equals b.x, then compare by another property , like a.y vs b.y
これは私のコード(ルビーでnoobの、申し訳ありません)であり、それは仕事をdoesntの...
ar.sort! do |a,b|
if a.x < b.y return -1
elseif a.x > b.x return 1
else return a.y <=> b.y
end
このブロックは関数内にあり、戻り値は関数から出て-1を返すようになっています。私はこれに関する助けに感謝します。
大切にしてください。三元で
ar.sort do |a, b|
case
when a.x < b.x
-1
when a.x > b.x
1
else
a.y <=> b.y
end
end
:case文で
なぜソート方法を使用していませんか? –
@Gashner私はそれを使用していますが、私は評価をカスタマイズするつもりです。 – alexserver
なぜ「<=>」は除外されていますか?あなたはそれを難しい方法でやりたいのですから? –