Ruby-合并对象,如jQuery扩展?

时间:2019-05-07 12:53:46

标签: ruby

我正试图找出如何合并2个对象,例如jquery扩展。 我已经读到可以使用merge来执行此操作,但是它似乎不适用于深度嵌套的对象。请注意以下示例中结果中user-agentcookie的不存在。

例如

defaults = {
    'headers' => {
        'content-type' => 'application/x-www-form-urlencoded',
        'accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
        'user-agent' => 'my test client',
        'cookie' => ''
    },
    'level1' => {
        'desc' => 'im from level 1',
        'title' => '1',
        'level2' => {
            'title' => '2'
        }
    }
}
overrides = {
    'headers' => {
        'content-type' => 'my new type',
        'access-token' => 'hi there'
    },
    'level1' => {
        'title' => 'one',
        'level2' => {
            'desc' => 'im from level 2',
            'title' => 'two'
        }
    }
}

result = defaults.merge(overrides)

输出

{
  "headers"=>{
     "content-type"=>"my new type", 
     "access-token"=>"hi there"
  },
  "level1"=>{
     "title"=>"one", 
     "level2"=>{
        "desc"=> "im from level 2", 
        "title"=>"two"
     }
  }
}

我可以用什么来使它与深度嵌套的对象一起工作,而不仅仅是简单的哈希?

Here's a REPL显示测试用例。

0 个答案:

没有答案