Szukaj…


Tworzenie tabeli „Array of Dictionaries” z kotwicami YAML jako identyfikatorami wierszy

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

  • deweloper chce wyrazić strukturę tabeli w YAML, w której do każdego wiersza odwołuje się zwarty identyfikator wiersza

Rozwiązanie

  • użyj kotwic YAML, przypisując identyfikator kotwicy do każdego wiersza w tabeli
  • w YAML „identyfikatory transkluzji” wielokrotnego użytku nazywane są kotwicami i aliasami
  • w YAML „identyfikatory transkluzji” wielokrotnego użytku składają się z tokenów alfanumerycznych poprzedzonych znakiem ampersand lub gwiazdką

Racjonalne uzasadnienie

  • Kotwice i aliasy YAML pozwalają na większą normalizację danych
  • Kotwice i aliasy YAML wymuszają DRY (nie powtarzaj się)
  • w tym przykładzie można zaprojektować i zachować strukturę tabeli, która ściśle pokrywa się z bazą danych

Pułapki

  • Kotwice YAML muszą zostać zadeklarowane, zanim będzie można do nich odwoływać się poprzez aliasy
  • Kotwice YAML muszą być unikalne w całym dokumencie
  • brak określenia unikalnych kotwic spowoduje błąd w yaml.load()
  • nie wszystkie parsery YAML niezawodnie obsługują kotwice i aliasy

Zobacz też

Stackoverflow YAML

Używanie aliasów YAML do odsyłaczy do wierszy z tabeli 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!

Problem

  • deweloper chce odsyłać wiersze z kotwicami z jednej tabeli i łączyć się z nimi za pomocą wierszy jako aliasów w innej tabeli

Rozwiązanie

  • użyj aliasów YAML, które odsyłają do wstępnie zdefiniowanych kotwic z innej tabeli
  • w YAML „identyfikatory transkluzji” wielokrotnego użytku nazywane są kotwicami i aliasami
  • w YAML „identyfikatory transkluzji” wielokrotnego użytku składają się z tokenów alfanumerycznych poprzedzonych znakiem ampersand lub gwiazdką

Racjonalne uzasadnienie

  • Kotwice i aliasy YAML pozwalają na większą normalizację danych
  • Kotwice i aliasy YAML wymuszają DRY (nie powtarzaj się)
  • w tym przykładzie można zaprojektować i zachować strukturę tabeli, która ściśle pokrywa się z bazą danych
  • w tym przykładzie wielkość danych i wielkość plików można zmniejszyć

Pułapki

  • w tym konkretnym przykładzie yaml.load() utworzy zagnieżdżone słowniki
    • jest to określane jako „problem zagnieżdżonych słowników”
    • pod parą nazwa-wartość osoby wartością dla osoby będzie pod-słownik
    • może to być niepożądane, ponieważ narusza jednolitość struktury tabeli
  • nieprawidłowe określenie aliasów spowoduje brak danych
    • (literówki utworzą zepsute odsyłacze)
  • YAML nie obsługuje zamiany plików przez odniesienie, więc wszystkie aliasy i kotwice muszą istnieć w tym samym pliku yaml
  • nie wszystkie parsery YAML niezawodnie obsługują kotwice i aliasy

Zobacz też

Stackoverflow YAML

Używanie kluczy scalających YAML do odsyłania wierszy z innej tabeli 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!

Problem

  • deweloper chce odsyłać wiersze z kotwicami z jednej tabeli i łączyć się z nimi za pomocą wierszy jako aliasów w innej tabeli
  • programista chce uniknąć tworzenia „problemu zagnieżdżonych słowników”

Rozwiązanie

  • użyj aliasów YAML z kluczami scalania YAML
  • w YAML „identyfikatory transkluzji” wielokrotnego użytku nazywane są kotwicami i aliasami
  • w YAML „identyfikatory transkluzji” wielokrotnego użytku składają się z tokenów alfanumerycznych poprzedzonych znakiem ampersand lub gwiazdką

Racjonalne uzasadnienie

  • Kotwice i aliasy YAML pozwalają na większą normalizację danych
  • Kotwice i aliasy YAML wymuszają DRY (nie powtarzaj się)
  • w tym przykładzie można zaprojektować i zachować strukturę tabeli, która ściśle pokrywa się z bazą danych
  • w tym przykładzie wielkość danych i wielkość plików można zmniejszyć

Pułapki

  • w tym konkretnym przykładzie yaml.load() utworzy zagnieżdżone słowniki
    • pod parą nazwa-wartość osoby wartością dla osoby będzie pod-słownik
    • może to być niepożądane, ponieważ narusza jednolitość struktury tabeli
  • nieprawidłowe określenie aliasów spowoduje brak danych
    • (literówki utworzą zepsute odsyłacze)
  • YAML nie obsługuje zamiany plików przez odniesienie, więc wszystkie aliasy i kotwice muszą istnieć w tym samym pliku yaml
  • nie wszystkie parsery YAML niezawodnie obsługują kotwice i aliasy

Zobacz też



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow