Combining anchor and alias in one line in triggers parserError: 'Expected <block end>, but found '<alias>'

Combining anchor and alias in one line in triggers parserError: 'Expected <block end>, but found '<alias>'

我正在尝试组合锚点和别名,以便将值重用到不同名称下的多个容器中。

我尝试了以下代码:

FWL_GV_NANSEN: &fwl_gv_nansen
  dtype: float
  value: 2715.0

FWL_GV_E3_2: &fwl_gv_e32 *fwl_gv_nansen

目标只是让另一个变量 FWL_GV_E3_2 包含与我稍后可以参考的 FWL_GV_NANSEN 相同的信息。

与在Python(或其他)中定义的一样:

a = 5.0
b = a
c = b

但这会触发以下错误消息:

yaml.parser.ParserError: while parsing a block mapping in "fwl_2.yml", line 7, column 3 expected < block end >, but found '< alias >'

有没有办法将别名的内容分配给用于定义新锚点的变量(通过不同的变量传播初始值?

PS:也许 YAML 不是最好的语言,因为使用 python 的变量会很简单,但我必须使用 YAML

YAML 节点属性(即标签和锚点)只能出现在 "real" 节点上:集合(块或流)或标量。

从生产规则可以看出,c-ns-properties只能在那里使用,但别名部分也可以states explicitly:

Note that an alias node must not specify any properties [...]


如果您的 YAML 解析器允许您访问原始 anchor/aliases 或某些 anchor-to-node/object 映射(例如我的 ruamel.yaml 包 Python 当用于 round-tripping) 时,是使用标记的标量:

FWL_GV_NANSEN: &fwl_gv_nansen
  dtype: float
  value: 2715.0

FWL_GV_E3_2: &fwl_gv_e32 !ref fwl_gv_nansen

使用 !ref 对象的构造函数解析标量 fwl_gv_nansen,使用一些 应用程序 特定代码。通常,锚点和别名事件由作曲家加载程序步骤 作曲之前解决(如果是这样,则该信息不再可用)。