我见过一些YAML文件使用“merge”运算符<<。下面是yaml.org上的“Yaml Cookbook”中的一个示例:
<<
mapping: name: Joe job: Accountant <<: age: 38
mapping:
name: Joe
job: Accountant
<<:
age: 38
字符串另一方面,我在yaml.org上的规范文档中找不到任何对合并运算符的引用。这个操作符是YAML的一部分,还是仅仅是Ruby实现的一部分?
xkftehaa1#
http://yaml.org/type/merge.html指定一个或多个要与当前Map合并的Map。“<<”合并键用于指示一个或多个指定Map的所有键都应插入到当前Map中。如果与键关联的值是单个Map节点,则将其每个键/值对插入到当前Map中,除非键已经存在于其中。如果与合并键关联的值是序列,然后这个序列被期望包含Map节点并且这些节点中的每一个根据其在序列中的顺序被依次合并。在序列中较早的Map节点中的键覆盖在较晚的Map节点中指定的键。更多信息,请访问http://yaml.org/type/
bpsygsoo2#
根据SO answer:请注意,合并键不是YAML规范的一部分,因此不能保证有效。它们也是为过时的YAML 1.1版本指定的,并且尚未在当前的YAML 1.2版本中更新。我们打算在即将推出的YAML 1.3中显式删除合并键(并可能提供更好的替代方案)。但是,我个人可以确认,截至今天(2023-10-27),最新版本的PyYAML(v6.0.1)仍然支持它,Docker Compose在解析docker-compose.yml文件时也是如此。也许他们的YAML 1.3计划失败了,或者比预期的要长,同时,每个人都在享受这个非常有用的合并键的好处,以至于停不下来?
docker-compose.yml
2条答案
按热度按时间xkftehaa1#
http://yaml.org/type/merge.html
指定一个或多个要与当前Map合并的Map。
“<<”合并键用于指示一个或多个指定Map的所有键都应插入到当前Map中。如果与键关联的值是单个Map节点,则将其每个键/值对插入到当前Map中,除非键已经存在于其中。如果与合并键关联的值是序列,然后这个序列被期望包含Map节点并且这些节点中的每一个根据其在序列中的顺序被依次合并。在序列中较早的Map节点中的键覆盖在较晚的Map节点中指定的键。
更多信息,请访问http://yaml.org/type/
bpsygsoo2#
根据SO answer:
请注意,合并键不是YAML规范的一部分,因此不能保证有效。它们也是为过时的YAML 1.1版本指定的,并且尚未在当前的YAML 1.2版本中更新。我们打算在即将推出的YAML 1.3中显式删除合并键(并可能提供更好的替代方案)。
但是,我个人可以确认,截至今天(2023-10-27),最新版本的PyYAML(v6.0.1)仍然支持它,Docker Compose在解析
docker-compose.yml
文件时也是如此。也许他们的YAML 1.3计划失败了,或者比预期的要长,同时,每个人都在享受这个非常有用的合并键的好处,以至于停不下来?