我有一个任意键的哈希:
{'GET': [1,2,3]}
或
{'POST': ['my data 0', 'my data 1']}
哈希是从JSON生成的,它在请求体中发送。只有一个键,或者更确切地说,我忽略了任何一个键。
我想找到它是哪个键,这是我写的代码:
items = data['GET'] || data['get'] || data['POST'] || data['post']
这看起来并不整洁。如果我想要处理的键的数量增加,则表达式将很长。我希望它简短。我是Ruby的新手,有更好的方法吗?
答案 0 :(得分:1)
你可以得到第一个值(假设只有一个),如下所示:
item = data.values.first
答案 1 :(得分:1)
您可以使用Hash#values_at方法。
http://www.ruby-doc.org/core-1.9.3/Hash.html#method-i-values_at
data.values_at('GET','get', 'POST','post').first
答案 2 :(得分:1)
如果您认为它可能会增长,您可能希望将HTTP方法与数据中该方法的发现分开:
methods = [:get, :post]
def find_method(data)
keys = methods.map{|m| [m.to_s.upcase, m.to_s]}.flatten
data.values_at(keys).first
end