web-dev-qa-db-ja.com

Ruby-ハッシュの値を取得

私のようなハッシュがあります

{:key1 => "value1", :key2 => "value2"}

変数kがあり、その値は'key1'または'key2'

kの値を変数vに取得したい。

ifまたはcaseを使用せずにこれを達成する方法はありますか?単一回線ソリューションが推奨されます。助けてください。

27
Sayuj

キーを文字列からシンボルに変換し、ハッシュで検索を実行します。

hash = {:key1 => "value1", :key2 => "value2"}
k = 'key1'

hash[k.to_sym] # or iow, hash[:key1], which will return "value1"

Railsは HashWithIndifferentAccess と呼ばれるこのクラスを使用します。これは、このような場合に非常に役立つことが証明されています。質問にRubyでタグ付けしただけであることは知っていますが、このクラスの実装をRailsのソースから盗み、コードベース全体で文字列から記号へ、および記号から文字列への変換を避けることができます。記号または文字列をキーとして使用して、値にアクセスできるようにします。

hash = HashWithIndifferentAccess.new({:key1 => "value1", :key2 => "value2"})
hash[:key1]  # "value1"
hash['key1'] # "value1"
72
Anurag