Sök…


Skapa en tabell "Array of Dictionaries" med YAML-ankare som radidentifierare

    ---
    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

Problem

  • utvecklare vill uttrycka en tabellstruktur i YAML, där varje rad hänvisas till av en kompakt radidentifierare

Lösning

  • använd YAML-ankare genom att tilldela en ankaridentifierare till varje rad i tabellen
  • i YAML kallas återanvändbara "transkluderingsidentifierare" förankringar och alias
  • i YAML består återanvändbara "transclusionsidentifierare" av alfanumeriska symboler som föregås av en ampersand eller en asterisk

Logisk grund

  • YAML-ankare och alias möjliggör ökad datanormalisering
  • YAML-ankare och alias tvingar DRY (inte upprepa dig själv)
  • i det här exemplet kan en tabellstruktur utformas och bevaras som nära sammanfaller med en databas

Fallgropar gropar~~POS=HEADCOMP

  • YAML-ankare måste deklareras innan de kan refereras till av alias
  • YAML-ankare måste vara unika i hela dokumentet
  • misslyckande med att ange unika förankringar orsakar ett fel på yaml.load()
  • inte alla YAML-tolkare stöder pålitligt ankare och alias

Se även

Stackoverflow YAML

Använda YAML-alias för att korsreferenser rader från en YAML-tabell

    ---
    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!

Problem

  • utvecklare vill korsreferenser rader med förankringar från ett bord och länka till dem med rader som alias i en annan tabell

Lösning

  • använd YAML-alias, som korsreferenserar fördefinierade förankringar från en annan tabell
  • i YAML kallas återanvändbara "transkluderingsidentifierare" förankringar och alias
  • i YAML består återanvändbara "transclusionsidentifierare" av alfanumeriska symboler som föregås av en ampersand eller en asterisk

Logisk grund

  • YAML-ankare och alias möjliggör ökad datanormalisering
  • YAML-ankare och alias tvingar DRY (inte upprepa dig själv)
  • i det här exemplet kan en tabellstruktur utformas och bevaras som nära sammanfaller med en databas
  • i det här exemplet kan datainmatning och filstorlekar minskas

Fallgropar gropar~~POS=HEADCOMP

  • i detta specifika exempel kommer yaml.load() att producera kapslade ordböcker
    • detta kallas "kapslade ordböckerproblem"
    • under personens namnvärde-par kommer värdet för personen att vara en underordbok
    • detta kan vara oönskat, eftersom det bryter likformigheten i bordstrukturen
  • Underlåtenhet att korrekt specificera alias leder till saknade data
    • (skrivfel skapar trasiga korsreferenser)
  • YAML stöder inte filtransklusion genom referens, så alla alias och ankare måste finnas i samma yaml-fil
  • inte alla YAML-tolkare stöder pålitligt ankare och alias

Se även

Stackoverflow YAML

Använda YAML-sammanslagningstangenter för att korsreferenserrader från en annan YAML-tabell

    ---
    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!

Problem

  • utvecklare vill korsreferenser rader med förankringar från ett bord och länka till dem med rader som alias i en annan tabell
  • utvecklare vill undvika att skapa "kapslade ordböcker-problemet"

Lösning

  • använd YAML-alias med YAML-sammanslagningsknappar
  • i YAML kallas återanvändbara "transkluderingsidentifierare" förankringar och alias
  • i YAML består återanvändbara "transclusionsidentifierare" av alfanumeriska symboler som föregås av en ampersand eller en asterisk

Logisk grund

  • YAML-ankare och alias möjliggör ökad datanormalisering
  • YAML-ankare och alias tvingar DRY (inte upprepa dig själv)
  • i det här exemplet kan en tabellstruktur utformas och bevaras som nära sammanfaller med en databas
  • i det här exemplet kan datainmatning och filstorlekar minskas

Fallgropar gropar~~POS=HEADCOMP

  • i detta specifika exempel kommer yaml.load() att producera kapslade ordböcker
    • under personens namnvärde-par kommer värdet för personen att vara en underordbok
    • detta kan vara oönskat, eftersom det bryter likformigheten i bordstrukturen
  • Underlåtenhet att korrekt specificera alias leder till saknade data
    • (skrivfel skapar trasiga korsreferenser)
  • YAML stöder inte filtransklusion genom referens, så alla alias och ankare måste finnas i samma yaml-fil
  • inte alla YAML-tolkare stöder pålitligt ankare och alias

Se även



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow