合并两个哈希作为红宝石中的子哈希

时间:2018-07-10 20:48:20

标签: ruby

我所拥有的:

{
  :url=>"http://localhost:something",
  :platformName=>"Windows",
  :foodName=>"taco",
  :Version=>"1",
  :browser=>"Edge"
}

这些值是由用户在不同的HashMaps中输入的,因此为了方便起见,我只是将输入输入到单个哈希中,但是调用的方法是这样的:

def initialize(opts)
     @object = super Class::SuperClass.for(:remote,hash)
    end

我希望哈希看起来像这样:

hash =   {
          :url=>"http://localhost:something", 
          :SubHash=> {
              :url=>"http://localhost:something",
              :platformName=>"Windows",
              :foodName=>"taco",
              :Version=>"1",
              :browser=>"Edge"
          }
        }

2 个答案:

答案 0 :(得分:1)

您可以使用Hash#sliceHash#merge来获取所需的内容:

hash = {
  :url=>"http://localhost:something",
  :platformName=>"Windows",
  :foodName=>"taco",
  :Version=>"1",
  :browser=>"Edge"
}

output = hash.slice(:url).merge(SubHash: hash)
# => {
#   :url=>"http://localhost:something",
#   :SubHash=>{
#     :url=>"http://localhost:something",
#     :platformName=>"Windows",
#     :foodName=>"taco",
#     :Version=>"1",
#     :browser=>"Edge"
#   }
# }

答案 1 :(得分:0)

为什么不简单地做

hash_a = { foo: bar }
hash_b = { a: 1, b: 2, c: 3 }

hash_a[:sub_hash] = hash_b

这将导致

{
  foo: bar
  sub_hash:
    { a: 1, b: 2, c: 3}
}