【问题标题】:syntax of yaml file - what is the meaning of "<<:"?yaml 文件的语法 - “<<:”是什么意思?
【发布时间】:2020-04-21 12:25:33
【问题描述】:

我正在处理超级账本示例,但在 configtx.yaml 文件中找不到对 YAML 语法的引用。具体来说,“

Profiles:
    TwoOrgsOrdererGenesis:
        Capabilities:
            <<: *ChannelCapabilities
        Orderer:
            <<: *OrdererDefaults

这是某种续行语法吗?这是否意味着“回到上一行的冒号”?

我找不到关于“

【问题讨论】:

标签: yaml


【解决方案1】:

它的正式名称是Merge Key。您可能会在搜索此名称时找到更多信息。

合并键是定义为 YAML 1.1 草案的(可选)类型之一:Language-Independent Types。 尽管它们只是一个草案,但许多处理器都实现了它们。

在某些 YAML 处理器中,它们是可选的,有些是默认实现的。

合并键通常用于定义默认值:

---
defaults: &defaults
  A: default for A
  B: default for B

some-mapping:
  << : *defaults
  A: foo
  C: bar

--- # will result in the same as:
some-mapping:
  A: foo
  B: default for B
  C: bar

一些背景:

请注意,YAML 1.2 的类型解析有点不同(请参阅my blog article 以获得解释和比较)。 YAML 1.2 Schema definitions 中的一些新定义是不同的,并且不向后兼容 1.1。 (虽然 YAML 1.2 Spec 里面确实提到了,但是没有提到不兼容的问题。)

Merge Keys 有时确实很方便,但很难以通用方式实现,就像几乎所有其他标准类型一样。

目前还没有标准的方法来合并这样的序列。这仅适用于映射。

【讨论】:

    猜你喜欢
    • 2018-04-24
    • 1970-01-01
    • 2022-10-15
    • 2013-11-02
    • 1970-01-01
    • 2018-03-20
    • 2018-05-12
    • 1970-01-01
    • 2014-04-21
    相关资源
    最近更新 更多