質問: Rubyでハッシュを扱うときにStringをkeyに設定する利点は何かありますか? ハッシュは内部的にはIntとして扱われているらしいので、実行速度の面でも安全性(打ち間違いによるエラー防止)のためにも多くの場合SymbolをKeyに使ったほうがいい気がしています。 素人考えですのでどなたかStringをKeyに設定するいい場面があったら教えてください。 また、もし特に利点がないのであれば、HashのKeyを全てSymbolにしてしまっても問題がないかが知りたいです。
回答: 基本的にはSymbolを用います Stringを用いる場面としては、なんらかの入力の結果キー含めて作られる・使われるHashの場合 わざわざ入力された文字列をSymbolに変換するのも面倒くさいのでStringをキーにする場面があります。 ###### その他 * Ruby2.2以降文字列キーは自動的にfreezeされる事でSymbolを用いた場合との速度差はだいぶ縮まっています。 * キーをStringにしようがSymbolにしようが結果は同じですので安全性に差はありません。 * Symbolにした方が`key => val`記法ではなく`key: val`記法を使えるのでちょっと楽 * Railsでは多くのハッシュが`stringify_keys`によって文字列キー/シンボルキー両対応に変換されているが 個人的には初心者ほど混乱する酷いお節介だと思ってます。