Ruby - 获取哈希值

32

我有一个类似于

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

的哈希表。我还有一个变量k,其值可能是'key1''key2'

我想要将k对应的值存入变量v中。

有没有不使用ifcase语句就能实现这个目标的方法?最好是一行代码解决。请帮忙。

1个回答

84

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

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"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接