【问题标题】:Repace node in leaf document替换叶子文档中的节点
【发布时间】:2016-05-06 06:12:27
【问题描述】:

我有以下 yml 文件表示 Ruby on Rails 项目中的本地化文件:

es:
  animals:
    happy_animals:
      dog: Dog
      cat: Cat
      horse: Horse
    sad_animals:
      cow: Cow
      elephant: Elephant

我需要添加另一个与动物同级别的类别才能得到以下结果:

es:
  animals:
    happy_animals:
      dog: Dog
      cat: Cat
      horse: Horse
    sad_animals:
      cow: Cow
      elephant: Elephant
  farm_animals:  # This key is new
    happy_animals:
      dog: Dog
      cat: Cat
      horse: Horse
    sad_animals:
      cow: Cow
      elephant: Sick elephant #This value changed

我想知道是否有办法复制结构,覆盖一些特定的值或节点。我尝试了以下方法:

es:
  animals: &animals
    happy_animals:
      dog: Dog
      cat: Cat
      horse: Horse
    sad_animals:
      cow: Cow
      elephant: Elephant
  farm_animals:  
    <<: *animals
    sad_animals:
      elephant: Sick Elephant

然而,这段代码覆盖了树的整个 sad_animals 分支,而我只想覆盖一个特定的值,让树的其余部分保持原样。用 yaml 可以吗?

【问题讨论】:

    标签: ruby-on-rails yaml


    【解决方案1】:

    这应该可以解决问题:

    es:
      animals: &animals
        happy_animals:
          dog: Dog
          cat: Cat
          horse: Horse
        sad_animals: &sad_animals
          cow: Cow
          elephant: Elephant
      farm_animals:  
        <<: *animals
        sad_animals:
          <<: *sad_animals
          elephant: Sick Elephant
    

    2.3.0 :001 > yaml = <<-YALM
    2.3.0 :002">     es:
    2.3.0 :003">       animals: &animals
    2.3.0 :004">         happy_animals:
    2.3.0 :005">           dog: Dog
    2.3.0 :006">           cat: Cat
    2.3.0 :007">           horse: Horse
    2.3.0 :008">         sad_animals: &sad_animals
    2.3.0 :009">           cow: Cow
    2.3.0 :010">           elephant: Elephant
    2.3.0 :011">       farm_animals:  
    2.3.0 :012">         <<: *animals
    2.3.0 :013">         sad_animals:
    2.3.0 :014">           <<: *sad_animals
    2.3.0 :015">           elephant: Sick Elephant
    2.3.0 :016"> YALM
    2.3.0 :017"> Psych.load yaml
     => {"es"=>{"animals"=>{"happy_animals"=>{"dog"=>"Dog", "cat"=>"Cat", "horse"=>"Horse"}, "sad_animals"=>{"cow"=>"Cow", "elephant"=>"Elephant"}}, "farm_animals"=>{"happy_animals"=>{"dog"=>"Dog", "cat"=>"Cat", "horse"=>"Horse"}, "sad_animals"=>{"cow"=>"Cow", "elephant"=>"Sick Elephant"}}}} 
    

    如您所见,sad_animals 有一个Sick Elephant

    "sad_animals"=>{"cow"=>"Cow", "elephant"=>"Sick Elephant"}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-16
      • 1970-01-01
      • 2014-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多