yaml
Ankers en aliassen gebruiken voor getranscludeerde inhoud
Zoeken…
Een tabel "Array of Dictionaries" maken met YAML-ankers als rij-ID's
---
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
Probleem
- ontwikkelaar wil een tabelstructuur in YAML weergeven, waarbij elke rij wordt aangeduid door een compacte rij-ID
Oplossing
- gebruik YAML-ankers door een anker-ID toe te wijzen aan elke rij in de tabel
- in YAML worden herbruikbare 'transclusie-ID's' ankers en aliassen genoemd
- in YAML bestaan herbruikbare 'transclusie-ID's' uit alfanumerieke tokens voorafgegaan door een ampersand of asterisk
motivering
- YAML-ankers en aliassen zorgen voor verhoogde gegevensnormalisatie
- YAML-ankers en aliassen dwingen
DRY(herhaal jezelf niet) - in dit voorbeeld kan een tabelstructuur worden ontworpen en bewaard die nauw samenvalt met een database
valkuilen
- YAML-ankers moeten worden aangegeven voordat naar hen kan worden verwezen door aliassen
- YAML-ankers moeten uniek zijn in het document
- het niet specificeren van unieke ankers zal een fout veroorzaken op
yaml.load() - niet alle YAML-parsers ondersteunen betrouwbaar ankers en aliassen
Zie ook
YAML-aliassen gebruiken om naar rijen van een YAML-tabel te verwijzen
---
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!
Probleem
- ontwikkelaar wil rijen-met-ankers uit de ene tabel kruisverwijzen en daaraan koppelen met rijen-als-aliassen in een andere tabel
Oplossing
- gebruik YAML-aliassen, die vooraf gedefinieerde ankers uit een andere tabel doorverwijzen
- in YAML worden herbruikbare 'transclusie-ID's' ankers en aliassen genoemd
- in YAML bestaan herbruikbare 'transclusie-ID's' uit alfanumerieke tokens voorafgegaan door een ampersand of asterisk
motivering
- YAML-ankers en aliassen zorgen voor verhoogde gegevensnormalisatie
- YAML-ankers en aliassen dwingen
DRY(herhaal jezelf niet) - in dit voorbeeld kan een tabelstructuur worden ontworpen en bewaard die nauw samenvalt met een database
- in dit voorbeeld kunnen gegevensinvoer en bestandsgroottes worden verkleind
valkuilen
- in dit specifieke voorbeeld
yaml.load()geneste woordenboeken- dit wordt het "probleem met geneste woordenboeken" genoemd
- onder het persoon naam-waarde paar zal de waarde voor persoon een subwoordenboek zijn
- dit kan ongewenst zijn, omdat het de uniformiteit van de tafelstructuur breekt
- het niet correct opgeven van aliassen zal resulteren in ontbrekende gegevens
- (typefouten zorgen voor verbroken kruisverwijzingen)
- YAML ondersteunt transclusie van bestanden niet door verwijzing, dus alle aliassen en ankers moeten in hetzelfde yaml-bestand voorkomen
- niet alle YAML-parsers ondersteunen betrouwbaar ankers en aliassen
Zie ook
YAML samenvoegtoetsen gebruiken om rijen van een andere YAML-tabel te verwijzen
---
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!
Probleem
- ontwikkelaar wil rijen-met-ankers uit de ene tabel kruisverwijzen en daaraan koppelen met rijen-als-aliassen in een andere tabel
- ontwikkelaar wil voorkomen dat het probleem met "geneste woordenboeken" ontstaat
Oplossing
- gebruik YAML-aliassen, met YAML-samenvoegtoetsen
- in YAML worden herbruikbare 'transclusie-ID's' ankers en aliassen genoemd
- in YAML bestaan herbruikbare 'transclusie-ID's' uit alfanumerieke tokens voorafgegaan door een ampersand of asterisk
motivering
- YAML-ankers en aliassen zorgen voor verhoogde gegevensnormalisatie
- YAML-ankers en aliassen dwingen
DRY(herhaal jezelf niet) - in dit voorbeeld kan een tabelstructuur worden ontworpen en bewaard die nauw samenvalt met een database
- in dit voorbeeld kunnen gegevensinvoer en bestandsgroottes worden verkleind
valkuilen
- in dit specifieke voorbeeld
yaml.load()geneste woordenboeken- onder het persoon naam-waarde paar zal de waarde voor persoon een subwoordenboek zijn
- dit kan ongewenst zijn, omdat het de uniformiteit van de tafelstructuur breekt
- het niet correct opgeven van aliassen zal resulteren in ontbrekende gegevens
- (typefouten zorgen voor verbroken kruisverwijzingen)
- YAML ondersteunt transclusie van bestanden niet door verwijzing, dus alle aliassen en ankers moeten in hetzelfde yaml-bestand voorkomen
- niet alle YAML-parsers ondersteunen betrouwbaar ankers en aliassen
Zie ook
Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow