Ruby - getting value of hash

103,422

Convert the key from a string to a symbol, and do a lookup in the hash.

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

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

Rails uses this class called HashWithIndifferentAccess that proves to be very useful in such cases. I know that you've only tagged your question with Ruby, but you could steal the implementation of this class from Rails' source to avoid string to symbol and symbol to string conversions throughout your codebase. It makes the value accessible by using a symbol or a string as a key.

hash = HashWithIndifferentAccess.new({:key1 => "value1", :key2 => "value2"})
hash[:key1]  # "value1"
hash['key1'] # "value1"
Share:
103,422
Sayuj
Author by

Sayuj

Updated on December 30, 2020

Comments

  • Sayuj
    Sayuj over 3 years

    I have a hash like

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

    And I have a variable k which will have the value as 'key1' or 'key2'.

    I want to get the value of k into a variable v.

    Is there any way to achieve this with out using if or case? A single line solution is preferred. Please help.