Ruby – 获取哈希值
我喜欢哈希
{: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
类,在这种情况下certificate它非常有用。 我知道你只用Ruby标记了你的问题,但是你可以从Rails的源代码中窃取这个类的实现,以避免在整个代码库中使用字符串到符号和符号到字符串转换。 它通过使用符号或字符串作为键来访问值。
hash = HashWithIndifferentAccess.new({:key1 => "value1", :key2 => "value2"}) hash[:key1] # "value1" hash['key1'] # "value1"