gpt4 book ai didi

yaml - 覆盖 YAML 子项

转载 作者:行者123 更新时间:2023-12-02 06:40:11 25 4
gpt4 key购买 nike

假设我有以下 YAML 文件:

-
key1: value
# and so on...
key99: value
key100:
subkey1: value
# and so on...
subkey100: value
-
key1: value
# and so on...
key99: value
key100:
subkey1: value
# and so on...
subkey100: SOME DIFFERENT VALUE

处理大量相同数据的自然方法是使用 anchor ,并仅覆盖发生更改的键。

问题是,这里的子项是不同的。有没有一种简单的方法可以仅引用 key100['subkey100'] 更改?或者我必须在每个级别使用一系列 anchor ?

即,是否有以下缩写:

- &anchor
key1: value
# and so on...
key99: value
key100: &subanchor
subkey1: value
# and so on...
subkey100: value
-
<<: *anchor
key100:
<<: *subanchor
subkey100: SOME DIFFERENT VALUE

最佳答案

如果我正确理解了问题,我认为规范不支持覆盖锚定节点的元素。

在阅读 spec(版本 1.2,但 1.1 的说法相同)时,7.1 Alias Nodes 部分指出(强调我的):

Subsequent occurrences of a previously serialized node are presented as alias nodes. The first occurrence of the node must be marked by an anchor to allow subsequent occurrences to be presented as alias nodes.

An alias node is denoted by the “*” indicator. The alias refers to the most recent preceding node having the same anchor. It is an error for an alias node to use an anchor that does not previously occur in the document. It is not an error to specify an anchor that is not used by any alias node.

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

这里有两点:

  1. “先前序列化的节点” - 此措辞表明别名旨在表示原始节点的另一个出现,而不仅仅是原始节点中的数据。换句话说,它代表同一个对象,而不是副本。

  2. 如果别名不能包含任何内容(第二个粗体部分),则您无法按照问题中建议的方式指定覆盖。

所以我对规范的解释是你不能根据规范这样做。

但是 - 如果您将原始示例(第二个代码块)粘贴到 this online tool 中(您可能想要取消选中“规范”),该工具会按照问题中的预期解释它,复制原始内容但覆盖 subkey100。与 YAML Lint Tool 相同,this online parser 也是如此。

所以它在实践中似乎可行,但我在规范中找不到对它的支持。

关于yaml - 覆盖 YAML 子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4875185/

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