YAML中实现列表可复用片段的正确语法是什么
错误原因
<< 是YAML标准中仅适用于映射(键值对结构)的合并语法,无法用来合并序列(列表结构)。你之前的写法会将<<识别为普通键名,锚点指向的列表会被作为该键的值,最终就会出现你遇到的嵌套结构。
标准YAML实现方案(全解析器兼容)
你可以给需要复用的列表项单独设置锚点,在目标列表中直接引用锚点即可:
# 定义公共列表项锚点 _common: - &item1 a: a b: b - &item2 c: c d: d data: list_ef: - *item1 - *item2 - e: e f: f list_gh: - *item1 - *item2 - g: g h: h
上述写法完全符合YAML标准规范,所有解析器都可以正常解析,最终生成的结构和你预期的完全一致。
如果你使用的场景支持扩展语法(比如Ansible、GitHub Actions等内置模板能力的环境),也可以用更简洁的序列拼接写法,但上述方案兼容性最强,不需要依赖任何扩展支持。
内容的提问来源于stack exchange,提问作者EugenOS
相关产品推荐
相关产品推荐

