YAMLの演算子は、Pythonのダブルスプラット演算子やJavaScriptのオブジェクト分解演算子<<:
と同様に、あるマッピングの内容を別のマッピングにインポートするために使用できます。たとえば、**
...
foo:
a: b
<<:
c: d
e: f
は以下と同等である
foo:
a: b
c: d
e: f
これは、ノードアンカー多くのオブジェクトに共通のデフォルトプロパティを含める。例えば、Y 分で YAML を学ぶチュートリアル:
# Anchors can be used to duplicate/inherit properties base: &base name: Everyone has same name foo: &foo <<: *base age: 10 bar: &bar <<: *base age: 20
しかし、この構文がどこから来たのか、なぜ機能するのかについては混乱していますCTRL。FYAML仕様は<<
、仕様のどこにも記載されていないことを示しています。しかし、少なくとも、pyYAML とはそしてオンライン YAML パーサー。
この構文とは何ですか? また、なぜ仕様には記載されていないのでしょうか?
ベストアンサー1
これはYAMLバージョン1.1のマージキー言語非依存型と呼ばれ、ここ。
これはパーサーがオプションでサポートできるもので、基本的には特殊キーを使用したキーと値のペアの解釈です<<
。値はマッピング (通常は仕様にあるようにエイリアスで示されますが、必須ではないようですが、エイリアスを使用しないことにはほとんど意味がありません) またはマッピングのリスト (つまり、マッピングのエイリアス) のいずれかであり、特別な方法で解釈されます。