23
的获得价值我有一个像红宝石 - 哈希
{:key1 => "value1", :key2 => "value2"}
哈希和我有一个变量k
这将对价值'key1'
或'key2'
。
我想将k
的值存入变量v
。
有没有什么办法可以达到这个目的?用if
或case
?单线解决方案是首选。请帮忙。
的获得价值我有一个像红宝石 - 哈希
{:key1 => "value1", :key2 => "value2"}
哈希和我有一个变量k
这将对价值'key1'
或'key2'
。
我想将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"