198 votes

pourquoi --- (3 tirets/hyphen) dans le fichier yaml ?

J'ai donc commencé à utiliser YAML au lieu de application.properties car il est plus lisible. Je vois en YAML les fichiers commencent par --- . J'ai cherché sur Google et j'ai trouvé l'explication ci-dessous.

YAML utilise trois tirets ("---") pour séparer les directives des documents. du document. Cela permet également de signaler l'existence de l'option n'est présent.

J'ai également essayé un échantillon sans --- et a compris qu'il n'est pas obligatoire de les avoir.

Je pense que je n'ai pas une compréhension claire de ce qui suit directive y document . Quelqu'un peut-il m'expliquer à l'aide d'un exemple simple ?

6 votes

Avez-vous vérifié la spécification YAML ? Elle décrit à peu près ce qu'est un directive ou un document est. Désolé, ceci est qualifié pour idownvotedbecau.se/noresearch sur mon livre.

42 votes

@lexicore J'ai vérifié la documentation avant d'essayer un exemple. Mais je n'ai pas bien compris et j'ai pensé que je comprendrais mieux si quelqu'un m'expliquait. Je suis désolé si cela m'a semblé très basique, pour info je ne suis qu'un débutant.

137voto

Yi Ou Points 615

Comme vous l'avez déjà constaté, les trois tirets --- sont utilisés pour signale 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 o %TAG conformément à la spécification actuelle. Par exemple :

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

    doc 1
    ---
    doc 2

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

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

La spécification est bonne pour les implémenteurs de parseurs yaml. Cependant, je trouve que cet article plus facile à lire du point de vue de l'utilisateur.

0 votes

J'ai lu la règle de production 211 dans la spécification YAML 1.2 de telle manière que vous n'avez pas besoin d'un indicateur de fin de document même si vous avez des directives dans le document suivant, la seule chose requise dans ce cas est d'avoir un indicateur de fin de directives (au début de l'indicateur de fin de document). l-explicit-document ).

0 votes

Ma compréhension de l'utilisation des trois points est basée sur cette phrase de le cahier des charges : "Si un document n'est pas terminé par une ligne de marque de fin de document, le document suivant doit commencer par une ligne de marque de fin de directive. " Exiger qu'un document commence par le marqueur de fin de directive --- signifie qu'aucune directive n'est autorisée pour ce document. Ainsi, si le document 2 contient des directives, le document 1 doit être terminé par le marqueur de fin de document. ... .

0 votes

En effet, la définition de l-explicit-document interdit les directives à ce sujet : "Un document explicite commence par une ligne de marqueurs de fin de directives explicites, mais pas de directives.

70voto

Yassin Hajaj Points 4659

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

Jetons un coup d'œil à 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 au processus YAML. comme tous les autres détails de présentation, ne sont pas reflétés dans l'arbre de sérialisation YAML ou le graphe 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.

En voici un exemple dans la documentation pour la directive YAML

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X