ruby 合并运算符是官方的YAML吗?

tzdcorbm  于 11个月前  发布在  Ruby
关注(0)|答案(2)|浏览(90)

我见过一些YAML文件使用“merge”运算符<<。下面是yaml.org上的“Yaml Cookbook”中的一个示例:

mapping:
  name: Joe
  job: Accountant
  <<:
    age: 38

字符串
另一方面,我在yaml.org上的规范文档中找不到任何对合并运算符的引用。
这个操作符是YAML的一部分,还是仅仅是Ruby实现的一部分?

xkftehaa

xkftehaa1#

http://yaml.org/type/merge.html
指定一个或多个要与当前Map合并的Map。
“<<”合并键用于指示一个或多个指定Map的所有键都应插入到当前Map中。如果与键关联的值是单个Map节点,则将其每个键/值对插入到当前Map中,除非键已经存在于其中。如果与合并键关联的值是序列,然后这个序列被期望包含Map节点并且这些节点中的每一个根据其在序列中的顺序被依次合并。在序列中较早的Map节点中的键覆盖在较晚的Map节点中指定的键。
更多信息,请访问http://yaml.org/type/

bpsygsoo

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计划失败了,或者比预期的要长,同时,每个人都在享受这个非常有用的合并键的好处,以至于停不下来?

相关问题