Ruby でハッシュ内のすべてのキーを文字列からシンボルに変換する (最も高速で、クリーンで、簡単な) 方法は何ですか?
これは YAML を解析するときに便利です。
my_hash = YAML.load_file('yml')
以下が使えるようになりたいです:
my_hash[:key]
それよりも:
my_hash['key']
ベストアンサー1
Ruby >= 2.5 (ではドキュメント) では以下を使用できます:
my_hash.transform_keys(&:to_sym)
古いバージョンの Ruby を使用していますか? キーをシンボル化したハッシュを新しいハッシュにコピーするワンライナーを次に示します。
my_hash = my_hash.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
Railsでは以下を使用できます:
my_hash.symbolize_keys
my_hash.deep_symbolize_keys