Ruby - 获取哈希值

时间:2011-12-30 05:44:42

标签: ruby hash key-value

我有像

这样的哈希

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

我有一个变量k,其值为'key1''key2'

我想将k的值变为变量v

有没有办法在不使用ifcase的情况下实现这一目标?单线解决方案是优选的。请帮忙。

1 个答案:

答案 0 :(得分:71)

将键从字符串转换为符号,并在哈希中执行查找。

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"