在Yaml中,我们可以引用另一个yaml节点,如:
Person: &PersonID
FirstName: Xyz
LastName: Abc
Type:
- *PersonID
但如果我想将其扩展到:
Type:
- *PersonID
Foo: foo
Type1:
- *PersonID
Bar: bar
我不能这样做。我在下面有一个解决方案,但想知道它有什么特定的原因吗?
Type:
- ReferenceType: *PersonID
Age: 20
我知道&和*是YAML别名交叉引用,但是有更好的方法来解决这个问题吗?
答案 0 :(得分:2)
嗯,某些实现支持merge密钥:
Person: &PersonID
FirstName: Xyz
LastName: Abc
Type:
<< : *PersonID
Foo: foo
Type1:
<< : *PersonID
Bar: bar
但是,请注意,这不是核心YAML的一部分,并且尚未针对YAML 1.2进行更新,因此您的实施可能支持也可能不支持。
YAML社区对此的主要意见是<<
从一开始就是一个坏主意,不应该指明,原因有两个:
<<
作为子节点的特定标签会怎样?它是否有效?它是无效的吗?) 这似乎符合您的要求,但如果您使用它,请注意它的缺点。