0

私はRubyが初めてで、ソート方法についてかなり混乱しています

例えば:

person.sort{|x, y| x.age<=> y.age}

に変更するとy.age<=> x.age、並べ替え順序が逆になります。

私はこの他の質問を読みましたが、それらはすべて、アルゴリズムによって選択された配列からの2つの要素であるxとだけ言っています。ysort

しかし、x常により少ないオブジェクトですか?つまり、最初の方法で書いた場合、常に若いものから古いものへと並べ替えられますか?

ありがとう

4

2 に答える 2

2

この質問に自分で答える方法は次のとおりです。「不条理な還元x 」の形式を使用します。だったらわざわざ比較しなくてもyいいじゃないですか。あなたはこれを書くことができます:

person.sort { |x, y| 1 }

または、私はそれを逆に持っているので、次のように書くこともできます:

person.sort { |x, y| -1 }

しかし、どちらにしても、それはちょっとばかげていますね。やってみると確かにうまくいかない。

xしたがって、これは、このソート ブロックの本体では、 が下位オブジェクトであるかどうかがわからないことをy示しています。実際、xandは配列yの任意の 2 つの要素である可能性があります。personそれが、比較を書き出さなければならない理由です。

それはそれを明確にするのに役立ちますか、それともあなたの質問を誤解しましたか?

于 2013-03-23T06:54:12.570 に答える