sortスペースシップ オペレーターを使用する際の Ruby のメソッドの背後にあるプロセスを理解したいだけの初心者プログラマーです<=>。誰かが助けてくれることを願っています。
以下では:
array = [1, 2, 3]
array.sort { |a, b| a <=> b }
...一度に数値のペアを比較し、 の前に属している場合、それらが等しい場合、または続く必要がある場合sortに返すことを理解しています。-1ab01ab
ただし、降順でソートする場合は、次のようになります。
array.sort { |a, b| b <=> a }
…いったい何が起きているの?sortそれでも結果を比較a <=> bしてから反転しますか? それとも、returnの を解釈していて-1、逆の動作をしていますか?01
言い換えれば、変数をブロックに次のように配置する理由は次のとおりです。
array.sort { |b, a| b <=> a }
...最初の例と同じ並べ替えパターンになりますか?