実現したいこと
Rubyでsortメソッドについて学んでいますが、sortメソッドにブロックを渡した時にブロック変数の処理のされ方がわかりません。ブロック内の処理のされ方を理解したいです。
該当コード
a = {"Foo" => "hoge", "Bar" => "piyo", "Baz" => "fuga"} p a.sort{|a, b| a[1] <=> b[1] } => [["Baz", "fuga"], ["Foo", "hoge"], ["Bar", "piyo"]]
分からない部分
ハッシュのsortメソッドなので、[["Foo", "hoge"], ["Bar", "piyo"], ["Baz", "fuga"]]
の配列に変換され、ブロック変数に渡され、値の比較結果がブロックに戻されるまで理解しました。
理解できないのが、ブロック変数の|a, b|
にどのような順番で代入され、比較結果でどのように並び替えるかが分かりません。
1回目に比較が"hoge" <=> "piyo"で、比較結果が-1になり、2回目が"piyo" <=> "hoge"で、比較結果が1になると考えてますが、比較結果が-1の場合、"hoge"と"piyo"どちらを優先されるのかが分からず、このように考えてます。
様々なサイトを参考にしましたが、ブロック内の細かい処理まで記載されておらず、理解できないため、質問させて頂きました。分かりずらい文章で申し訳ないですが、教えてもらえると助かります。お願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/22 10:18
2022/01/22 10:52
2022/01/22 10:54
2022/01/22 11:39
2022/01/22 12:30
2022/01/22 12:33
2022/01/22 14:11 編集