Ruby - 获取哈希值

Say*_*yuj 28 ruby hash key-value

我喜欢哈希

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

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

我想把k变量的值v.

有没有办法通过使用if或实现这一点case?单线解决方案是优选的.请帮忙.

Anu*_*rag 72

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

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

hash[k.to_sym] # or iow, hash[:key1], which will return "value1"
Run Code Online (Sandbox Code Playgroud)

Rails使用这个被称为HashWithIndifferentAccess在这种情况下非常有用的类.我知道你只用Ruby标记了你的问题,但是你可以从Rails的源代码中窃取这个类的实现,以避免在整个代码库中使用字符串到符号和符号到字符串转换.它通过使用符号或字符串作为键来访问值.

hash = HashWithIndifferentAccess.new({:key1 => "value1", :key2 => "value2"})
hash[:key1]  # "value1"
hash['key1'] # "value1"
Run Code Online (Sandbox Code Playgroud)