#はじめに
たとえば、reputation = {very_bad: '最悪', bad: '悪い', good: '良い', very_good: '最高'}
みたいなハッシュテーブルがあったとして、その順番を{very_good: '最高', good: '良い', bad: '悪い', very_bad: '最悪'}
のように後ろから並べたい。
#やり方
pry(main)> reputation.to_a.reverse.to_h
#=> {very_good: '最高', good: '良い', bad: '悪い', very_bad: '最悪'}
これだけです。
一応説明すると、reverse
っていう配列の順番を逆にするメソッドを使いたいんだけどreputation
はhashなので使えない。なので一度to_a
でhashを配列に変換してreverse
した後、そのままだと配列のままなのでto_h
で元の戻す、ということです。
#あとがき
「gemのenum_help
を使ってラジオボタンの表示は日本語表記に、内部ではint型で処理したい。評価が低い方から数字も低い方を割り当てたい、しかしラジオボタンの表示は評価が高い方から表示したい。」という場面で必要でした。
普通enum使うときってvalueが数字になるはずだから並べ替えやすいんですが、enum_help使うと上に書いたようなhashを渡すことになるので「どうやって並べ替えるんだ…」ってなりました。
記事にすることもないような気がしますが、僕のような初心者だとto_s
やto_i
は使っても、to_a
とかは使う機会が少なくて詰まることがあると思うので少しでも誰かの役に立てば。