给定某些键,我想从散列中获取一个值数组(按照我给出键的顺序).我这样做了:
class Hash
def values_for_keys(*keys_requested)
result = []
keys_requested.each do |key|
result << self[key]
end
return result
end
end
Run Code Online (Sandbox Code Playgroud)
我修改了这个Hash
类,因为我计划在我的代码中几乎无处不在地使用它.
但我真的不喜欢修改核心类的想法.是否有内置解决方案?(找不到任何东西,所以我不得不写这个).
你应该可以使用values_at
:
values_at(key,...)→array
返回一个包含与给定键关联的值的数组.另见
Hash.select
.Run Code Online (Sandbox Code Playgroud)h = { "cat" => "feline", "dog" => "canine", "cow" => "bovine" } h.values_at("cow", "cat") #=> ["bovine", "feline"]
该文档没有具体说明返回数组的顺序,但是:
key
顺序.例如:
>> h = { :a => 'a', :b => 'b', :c => 'c' }
=> {:a=>"a", :b=>"b", :c=>"c"}
>> h.values_at(:c, :a)
=> ["c", "a"]
Run Code Online (Sandbox Code Playgroud)