在YAML中扩展数组?

时间:2013-10-21 18:59:29

标签: yaml

假设我有:

base_array:
  -1
  -2

我怎么能这样做:

my_array: << base_array
  -3

以便my_array为[1,2,3]

更新:我应该指定我希望扩展发生在YAML本身内。

2 个答案:

答案 0 :(得分:1)

由于已经注释过的issue#35存在,因此合并键 <<对您没有帮助。它仅将引用的合并/插入到映射中(请参见YAML文档merge)。相反,您应该使用序列并使用 anchor & alias *

因此您的示例应如下所示:

base_list: &base
    - 1
    - 2

extended: &ext
    - 3

extended_list:
    [*base, *ext]

将在这样的输出(JSON)中给出结果:

{
  "base_list": [
    1, 
    2
  ], 
  "extended": [
    3
  ], 
  "extended_list": [
    [
      1, 
      2
    ], 
    [
      3
    ]
  ]
} 

虽然并非完全符合您的预期,但是也许您的解析/加载环境可以拼合嵌套数组/列表简化为简单的数组/清单。

您始终可以在线测试YAML,例如使用:

答案 1 :(得分:0)

我需要做同样的事情,但要在 Azure DevOps Pipeline 上运行。特别是,我必须动态更新 stage dependency。我是怎么做到的:

dependents: [Stage_A, Stage_B]
otherDependents: [Stage_C] # This needed to be added by policy to the pipeline's execution
dependsOn:
- ${{ each dependent in dependents }}:
  - ${{ dependent }}
- ${{ each dependent in otherDependents }}:
  - ${{ dependent }}

这样做导致了所需的设置:

dependents: [Stage_A, Stage_B]
otherDependents: [Stage_C] # This needed to be added by policy to the pipeline's execution
dependsOn:
  - Stage_A
  - Stage_B
  - Stage_C

我说动态是因为变量 dependents 来自一个模板,我必须将 Stage_C 附加到该模板。