23
の取得値は、私はルビー - ハッシュ
{:key1 => "value1", :key2 => "value2"}
のようなハッシュを持っていると私は'key1'
または'key2'
としての価値を持つことになり、変数k
を持っています。
k
の値を変数v
に取得したいとします。
if
またはcase
を使用してこれを行う方法はありますか?一行の解決策が好ましい。助けてください。
の取得値は、私はルビー - ハッシュ
{:key1 => "value1", :key2 => "value2"}
のようなハッシュを持っていると私は'key1'
または'key2'
としての価値を持つことになり、変数k
を持っています。
k
の値を変数v
に取得したいとします。
if
またはcase
を使用してこれを行う方法はありますか?一行の解決策が好ましい。助けてください。
キーを文字列からシンボルに変換し、ハッシュを検索します。
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"