Techioz Blog

文字列をハッシュ内のシンボルに変換する最良の方法

概要

Ruby でハッシュ内のすべてのキーを文字列からシンボルに変換する (最も速く、最もクリーンで、簡単な) 方法は何ですか?

これは YAML を解析するときに便利です。

my_hash = YAML.load_file('yml')

使用できるようにしたいのですが:

my_hash[:key] 

それよりも:

my_hash['key']

解決策

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