web-dev-qa-db-ja.com

なぜ---(3ダッシュ/ハイフン)yamlファイルで?

そこで、読みやすいので、application.propertiesの代わりにYAMLファイルを使用し始めました。 YAMLファイルには、---で始まるファイルがあります。私はグーグルで調べて、以下の説明を見つけました。

YAMLは、3つのダッシュ(「---」)を使用してディレクティブをドキュメントコンテンツから分離します。これは、ディレクティブが存在しない場合にドキュメントの開始を通知するのにも役立ちます。

また、---なしのサンプルを試してみましたが、サンプルは必須ではないことがわかりました。

directivedocumentについて明確に理解していないと思います。誰でも簡単な例で説明できますか?

54
Andy

YAMLをディレクティブで開始しない場合、それらは必須ではありません。その場合は、それらを使用する必要があります。

ドキュメントを見てみましょう

3.2.3.4。ディレクティブ

各ドキュメントは、一連のディレクティブに関連付けることができます。ディレクティブには、名前とオプションのパラメーターシーケンスがあります。 ディレクティブはYAMLプロセッサへの指示であり、他のすべてのプレゼンテーションの詳細と同様に、YAMLシリアル化ツリーまたは表現グラフに反映されません。このバージョンのYAMLは、「YAML」と「TAG」という2つのディレクティブを定義しています。他のすべてのディレクティブは、YAMLの将来のバージョン用に予約されています。

この一例は、ドキュメントの )にもあります forディレクティブYAML

%YAML 1.2 # Attempt parsing
           # with a warning
---
"foo"
26
Yassin Hajaj

すでにわかったように、3つのダッシュ---は、ドキュメントの開始を通知するために使用されます、つまり:

  1. ドキュメントの開始をディレクティブの後に通知するには、つまり、現在の仕様に従って%YAMLまたは%TAG行。例えば:

    %YAML 1.2
    %TAG !foo! !foo-types/
    ---
    myKey: myValue
    
  2. 同じストリームに複数のyamlドキュメントがある場合にドキュメントの開始を通知するには、たとえばyamlファイル:

    doc 1
    ---
    doc 2
    

    Doc 2にいくつかの先行ディレクティブがある場合、3つのドット...を使用して、doc 1の終わり(およびdoc 2に先行する潜在的なディレクティブの始まり)をパーサーに示す必要があります。例えば:

    doc 1
    ...
    %TAG !bar! !bar-types/
    ---
    doc 2
    

この仕様は、yamlパーサーの実装者に適しています。しかし、私は この記事 ユーザーの観点から読みやすいと思います。

19
Yi Ou