ハッシュを使う時、h[:key]だったりh["key"]といった、文字列とシンボルでキーを設定できます。
しかし、自前で作ったのならまだしもライブラリから渡されたハッシュがどちらで指定しているのかわかりにくくも感じます。
どうせなら「どちらでもつかえたらいいのにな。」という記事です。
参考
やり方
最初にですが、参考にした記事のまんまです。
適当なディレクトリで、以下の通り実行します。
1 | bundle init |
テスト用のファイルを作成します。
test1.rbを以下の通り作成します。
1 | require 'active_support' |
作成できたら、bundle exec ruby test1.rbで起動します。
結果は以下の通りです。
1 | 123 |
文字列をキーにしたハッシュをシンボルで呼び出し、シンボルをキーにしたハッシュを文字列で呼び出すことができました。
また、入れ子のハッシュでも同様のことが可能でした。active_supportの用意してくれた.with_indifferent_accessに感謝です。
気になったので調査
.with_indifferent_accessを使うと文字列とシンボルのキーを相互に読み替えできることはわかりましたが、
変換の負荷ってどうなんだろう?と気になりました。
以下のようにして確認しました。
1 | # Gemfileに以下を追記 |
benchmarkをインストールできたら、test2.rbを作成します。
1 | require 'active_support' |
作成できたら、bundle exec ruby test2.rbで起動します。
結果は以下の通りです。
1 | 処理概要 1.100008375942707e-06s |
100000000 回取得を繰り返しましたが、ほとんど差がありませんでした。
これなら負荷は気にせず使っても問題なさそうです。
ではでは。