web-dev-qa-db-fra.com

pourquoi --- (3 tirets / trait d'union) dans le fichier yaml?

Je viens donc de commencer à utiliser le fichier YAML au lieu de application.properties car il est plus lisible. Je vois dans les fichiers YAML qu'ils commencent par ---. J'ai googlé et trouvé l'explication ci-dessous.

YAML utilise trois tirets ("---") pour séparer les directives du contenu du document. Cela sert également à signaler le début d'un document si aucune directive n'est présente.

De plus, j'ai essayé un échantillon sans --- et j'ai compris qu'il n'était pas obligatoire de les avoir.

Je pense que je n'ai pas une compréhension claire de directive et document. Quelqu'un peut-il s'il vous plaît expliquer avec un exemple simple?

54
Andy

Il n'est pas obligatoire de les avoir si vous ne commencez pas votre YAML par une directive. Si c'est le cas, vous devriez les utiliser.

Jetons un coup d'oeil à la documentation

3.2.3.4. Directives

Chaque document peut être associé à un ensemble de directives. Une directive a un nom et une séquence optionnelle de paramètres. Les directives sont des instructions destinées au processeur YAML et, comme tous les autres détails de la présentation, ne sont pas reflétées dans l'arbre de sérialisation YAML ou le graphique de représentation . Cette version de YAML définit deux directives, "YAML" et "TAG". Toutes les autres directives sont réservées aux futures versions de YAML.

Un exemple de ceci peut également être trouvé dans la documentation pour la directive YAML

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

Comme vous l'avez déjà constaté, les trois tirets --- sont utilisés pour signaler le début d'un document , c'est-à-dire:

  1. Pour signaler le début du document après les directives , c’est-à-dire %YAML ou %TAG lignes conformément à la spécification en cours. Par exemple:

    %YAML 1.2
    %TAG !foo! !foo-types/
    ---
    myKey: myValue
    
  2. Pour signaler que le document commence lorsque vous avez plusieurs documents yaml dans le même flux , par exemple un fichier yaml:

    doc 1
    ---
    doc 2
    

    Si le document 2 a des directives précédentes, nous devons utiliser trois points ... pour indiquer la fin du document 1 (et le début des directives potentielles précédant le document 2) à l'analyseur. Par exemple:

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

La spécification est bonne pour les développeurs de l'analyseur yaml. Cependant, je trouve cet article plus facile à lire du point de vue de l'utilisateur.

19
Yi Ou