1. ホーム
  2. ruby

[解決済み] 配列をアルファベット順に並べるには?

2022-02-09 06:49:32

質問内容

構文に問題があり、いくつかのことを試してみましたが、まだうまくいきません。私は何を理解していないのでしょうか? ありがとうございます。

change = ['cents', 'pennies', 'coins', 'dimes', 'pence', 'quarters']
change.sort {|anythinghere| a <=> b puts "Ascending #{anythinghere}" }

解決方法は?

なぜ change.sort ? Array#sort ブロックがない場合、デフォルトは昇順ソートとなり、ブロック { |a, b| a <=> b } :

sorted = change.sort # Ascending sort
sorted = change.sort { |a, b| a <=> b } # Same thing!
sorted
# => ["cents", "coins", "dimes", "pence", "pennies", "quarters"]

このブロックは、あなたが質問で書いたブロックとは異なり、比較する2つの変数を考慮する必要があることに注意してください。カスタムコンパレータを含めることは、例えば降順でソートしたい場合など、要素のソート方法を変更したい場合にのみ必要です。 { |a, b| b <=> a }

配列のテキスト表示を行いたい場合は、以下のようにします。

puts sorted

で、その場でソートしたい場合 (新しい配列を作らない場合) は sort!