1. ホーム
  2. yaml

[解決済み] YAML の << (左二重矢印) 構文は何と呼ばれていて、どこで仕様化されていますか?

2023-03-20 21:55:42

質問

質問 <<: 演算子は、あるマッピングの内容を別のマッピングにインポートするために使われます。 ** 演算子や、Pythonの ... オブジェクトの再構築演算子です。例えば

foo:
  a: b
  <<:
    c: d
  e: f

foo:
  a: b
  c: d
  e: f

と共に使用すると便利です。 ノード・アンカー と共に使用すると、多くのオブジェクトに共通のデフォルトプロパティを含めることができ、例えば、以下のようになります。 YAML を Y 分で学ぶ チュートリアルで説明されています。

# 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 + F を入力します。 YAML仕様 のための << は、それが仕様のどこにも表示されていないことを明らかにします。しかし、少なくとも、サポートされている PyYAML http://yaml-online-parser.appspot.com/ .

この構文は何でしょうか。また、なぜこの構文は仕様書に記載されていないのでしょうか。

どのように解決するのですか?

YAMLバージョン1.1のMerge Key Language-Independent Typeと呼ばれるもので、仕様は以下の通りです。 はこちら

これはパーサーがオプションでサポートできるもので、基本的にはキーと値のペアを解釈するものです。 << ここで、値はマッピング (通常は仕様のようにエイリアスを介して示され、それは必須ではなさそうですが、エイリアスを使用しないことはほとんど意味がありません) またはマッピングのリスト (すなわちマッピングのエイリアス) であり、特別な方法で解釈されるようになります。