yaml - 您如何添加、附加或扩展 YAML 序列?
问题描述
如果你有:
bananas:
foobar: &foobar_seq_bananas
- source: lorem
- source: ipsum
- source: dolor
apples:
foobar:
???? *foobar_seq_bananas
- source: 1000
您在 apples / foobar 中使用什么语法来将项目添加到引用的序列中?
我试过这个语法:
bananas:
foobar: &foobar_seq_bananas
- source: lorem
- source: ipsum
- source: dolor
apples:
foobar:
- *foobar_seq_bananas
- source: 1000
但它会生成一个列表列表:
apples:
foobar:
-
-
source: lorem
-
source: ipsum
-
source: dolor
-
source: 1000
期望的结果将是 . 下的单个(平面)列表apples/foobar
。
解决方案
YAML 不是一种编程语言,通常不会为您提供任何类型的运算符。
一个例外是为过时的 YAML 1.1 指定的合并键,它不是规范的一部分,但受到某些实现的支持。但是,这是用于合并映射,而不是序列。
如果您想在 YAML 中的多个位置复制项目,最好的办法是使用一些模板语言(YAML 流行的是 Jinja2,例如在 Ansible 和 SaltStack 中使用)。加载代码必须知道您使用模板语言,如果没有,则必须在将其提供给加载代码之前使用模板语言手动预处理 YAML。
推荐阅读
- react-native - 平移和缩放 SVG 图像,但放大图像时不清晰
- unity3d - Unity 编辑器中的 TMP 字段上的 TextMeshPro 对象
- angular - Angular 10 - 端点访问适用于邮递员,但不适用于 Angular
- powerbi - 动态卡片标签
- c++ - C++ 可变参数模板:根据可变参数模板大小列出所有数组元素的优雅方式
- git - 如何让 Git Push 仅推送在当前分支中创建的提交,而不包括来自 master 的所有提交?
- bash - awk 中的动态正则表达式
- php - $_POST HTML 表单中的多个值
- css - 模块构建失败(来自 ./node_modules/css-loader/dist/cjs.js):CssSyntaxError
- javascript - 当使用香草水疗中心时,我有一个错误 router.js:66 GET http://localhost:3000/views/Category.html 404 (Not Found)