gpt4 book ai didi

yaml - 如何从另一个 YAML anchor 引用 YAML anchor ?

转载 作者:行者123 更新时间:2023-12-04 04:23:59 29 4
gpt4 key购买 nike

我有一个 YAML 文件,它有几个不同的键,我想为其提供相同的值。此外,我希望该值易于配置。

请参阅下面的 YAML 以了解我的特定用例:

--- 
# Options for attribute_value
att_value_1: &att_value_1
att_value_2: &att_value_2
# There could be more options...

# This is where the constant is being set.
attribute_value: &attribute_value *att_value1

items:
- name: item1
attributes:
attribute_for_item1: *attribute_value
- name: item2
attributes:
attribute_for_item2: *attribute_value

这是一个简化的 YAML,它演示了这个问题:
--- 
foo: &foo "Hello World!"
bar: &bar *foo

错误(它提示第一行有“Hello World!”):
(<unknown>): did not find expected key while parsing a block mapping at line 2 column 1

我希望值(value)得到传播。

最佳答案

Error (it's complaining about the first line that has "Hello World!" on it):



您必须告诉我们您使用的是哪种 YAML 实现。 PyYAMLNimYAML两者都正确报告错误在第三行;第二行没问题。

I expect the value to propagate.



规范中没有任何内容支持这种期望。 The spec says :

Note that an alias node must not specify any properties or content, as these were already specified at the first occurrence of the node.



属性是 anchor 和标签。您不能在别名节点上放置 anchor ,因为它已经有一个 anchor 。

在你的例子中,
---
foo: &foo "Hello World!"
bar: &bar *foo
&bar完全是多余的,因为您已经可以引用 "Hello World"节点通过 *foo因此,引入 &bar 毫无意义。 .

回答您的问题:您不能从另一个 YAML anchor 引用 YAML anchor ,因为 YAML anchor 不是节点。 YAML 表示一个图,即节点和有向边。 anchor 和别名用于多次引用同一个节点(而不是像您想象的那样复制值)。这也意味着 YAML 文件中的所有内容都是内容。没有变量声明之类的东西。

您似乎为您的用例使用了错误的工具。要使用外部值配置 YAML 文件,您通常会使用模板引擎(例如,SaltStack 和 Ansible 使用 Jinja)并从模板生成 YAML 文件。您可以在另一个 YAML 文件中提供您的选项。这将清楚地将配置选项与内容分开。

关于yaml - 如何从另一个 YAML anchor 引用 YAML anchor ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58314269/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com