yaml
Utilisation d'ancres et d'alias pour le contenu exclu
Recherche…
Création d'une table "Tableau de dictionnaires" avec des ancres YAML comme identificateurs de ligne
---
person_table:
- &person001
fname: homer
lname: simpson
role: dad
age: 33
- &person002
fname: marge
lname: simpson
role: mom
age: 34
- &person003
fname: peter
lname: griffin
role: dad
age: 34
Problème
- le développeur souhaite exprimer une structure de tableau en YAML, où chaque ligne est référencée par un identifiant de ligne compact
Solution
- utiliser des ancres YAML en attribuant un identifiant d'ancrage à chaque ligne de la table
- dans YAML, les "identifiants de transclusion" réutilisables sont appelés ancres et alias
- dans YAML, les "identifiants de transclusion" réutilisables sont constitués de jetons alphanumériques précédés d'une esperluette ou d'un astérisque
Raisonnement
- Les ancres et les alias YAML permettent une normalisation accrue des données
- Les ancres et les alias YAML imposent
DRY(Ne vous répétez pas) - dans cet exemple, une structure de table peut être conçue et conservée, ce qui coïncide étroitement avec une base de données
Pièges
- Les ancres YAML doivent être déclarées avant de pouvoir être référencées par des alias
- Les ancres YAML doivent être uniques dans tout le document
- si vous ne spécifiez pas d'ancres uniques, cela provoquera une erreur sur
yaml.load() - tous les analyseurs YAML ne prennent pas en charge de manière fiable les ancres et les alias
Voir également
Utilisation d'alias YAML pour faire des références croisées à des lignes d'une table YAML
---
person_table:
- &person001
fname: homer
lname: simpson
role: dad
age: 33
- &person002
fname: marge
lname: simpson
role: mom
age: 34
- &person003
fname: peter
lname: griffin
role: dad
age: 34
motto_table:
- &motto001
person: *person001
motto: >
D'oh!! YAML is too complicated!
- &motto002
person: *person002
motto: >
Bart! Listen to your father!
- &motto003
person: *person003
motto: >
Hey! YAML is freakin' sweet!
Problème
- le développeur souhaite recouper les lignes avec des ancres d'une table et les lier avec des lignes en tant qu'alias dans une autre table
Solution
- utiliser des alias YAML, qui référencent les ancres prédéfinies d'une autre table
- dans YAML, les "identifiants de transclusion" réutilisables sont appelés ancres et alias
- dans YAML, les "identifiants de transclusion" réutilisables sont constitués de jetons alphanumériques précédés d'une esperluette ou d'un astérisque
Raisonnement
- Les ancres et les alias YAML permettent une normalisation accrue des données
- Les ancres et les alias YAML imposent
DRY(Ne vous répétez pas) - dans cet exemple, une structure de table peut être conçue et conservée, ce qui coïncide étroitement avec une base de données
- dans cet exemple, la saisie de données et la taille des fichiers peuvent être réduites
Pièges
- dans cet exemple spécifique,
yaml.load()produira des dictionnaires imbriqués- c'est ce qu'on appelle le "problème des dictionnaires imbriqués"
- sous la paire nom-personne-valeur, la valeur pour personne sera un sous-dictionnaire
- cela peut être indésirable, car cela brise l'uniformité de la structure de la table
- si vous ne parvenez pas à spécifier correctement les alias, les données seront manquantes
- (les fautes de frappe créeront des références croisées brisées)
- YAML ne prend pas en charge la transclusion de fichiers par référence, donc tous les alias et les ancres doivent exister dans le même fichier yaml
- tous les analyseurs YAML ne prennent pas en charge de manière fiable les ancres et les alias
Voir également
Utilisation des clés de fusion YAML pour référencer les lignes d'une autre table YAML
---
person_table:
- &person001
fname: homer
lname: simpson
role: dad
age: 33
- &person002
fname: marge
lname: simpson
role: mom
age: 34
- &person003
fname: peter
lname: griffin
role: dad
age: 34
motto_table:
- &motto001
<<: *person001
motto: >
D'oh!! YAML is too complicated!
- &motto002
<<: *person002
motto: >
Bart! Listen to your father!
- &motto003
<<: *person003
motto: >
Hey! YAML is freakin' sweet!
Problème
- le développeur souhaite recouper les lignes avec des ancres d'une table et les lier avec des lignes en tant qu'alias dans une autre table
- le développeur veut éviter de créer le "problème des dictionnaires imbriqués"
Solution
- utiliser des alias YAML, avec des clés de fusion YAML
- dans YAML, les "identifiants de transclusion" réutilisables sont appelés ancres et alias
- dans YAML, les "identifiants de transclusion" réutilisables sont constitués de jetons alphanumériques précédés d'une esperluette ou d'un astérisque
Raisonnement
- Les ancres et les alias YAML permettent une normalisation accrue des données
- Les ancres et les alias YAML imposent
DRY(Ne vous répétez pas) - dans cet exemple, une structure de table peut être conçue et conservée, ce qui coïncide étroitement avec une base de données
- dans cet exemple, la saisie de données et la taille des fichiers peuvent être réduites
Pièges
- dans cet exemple spécifique,
yaml.load()produira des dictionnaires imbriqués- sous la paire nom-personne-valeur, la valeur pour personne sera un sous-dictionnaire
- cela peut être indésirable, car cela brise l'uniformité de la structure de la table
- si vous ne parvenez pas à spécifier correctement les alias, les données seront manquantes
- (les fautes de frappe créeront des références croisées brisées)
- YAML ne prend pas en charge la transclusion de fichiers par référence, donc tous les alias et les ancres doivent exister dans le même fichier yaml
- tous les analyseurs YAML ne prennent pas en charge de manière fiable les ancres et les alias
Voir également
Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow