[Ruby]ハッシュ(Hash)のキーの文字列をシンボルに変換するには?

Ruby

どうも、ちょげ(@chogetarou)です。

ハッシュ(Hash)のキー(Key)の文字列(string)をシンボルに変換する方法を紹介します。

スポンサーリンク

方法

ハッシュ(Hash)のキー(Key)の文字列(string)をシンボルに変換するには、Hash#transform_keysメソッドを使います。

まず、ハッシュからtransform_keysメソッドを呼び出します。

そして、transform_keysメソッドの引数に「&:to_sym」を指定します。

#h=対象のハッシュ
result = h.transform_keys(&:to_sym)

上記のtransform_keysメソッドは、ハッシュ(Hash)のキーの文字列を全てシンボルに変換した結果を返します。
(呼び出したハッシュには影響を与えません)

もし、呼び出したハッシュに影響を与えたい場合は、transform_keysメソッドの代わりにtransform_keys!メソッドを呼び出します。

#呼び出したハッシュに影響を与える
h.transform_keys!(&:to_sym)

使用例

nums = { 
    "one" => 1, 
    "two" => 2,
    "three" => 3,
    "four" => 4,
    "five" => 5,
}

result = nums.transform_keys(&:to_sym)

p result
出力:
{:one=>1, :two=>2, :three=>3, :four=>4, :five=>5}

使用例2

nums = { 
    "one" => 1, 
    "two" => 2,
    "three" => 3,
    "four" => 4,
    "five" => 5,
}

nums.transform_keys!(&:to_sym)

p nums
出力:
{:one=>1, :two=>2, :three=>3, :four=>4, :five=>5}

コメント

タイトルとURLをコピーしました