Поиск…


Создание таблицы «Array of Dictionaries» с помощью якорей 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

проблема

  • разработчик хочет выразить структуру таблицы в YAML, где каждая строка ссылается на компактный идентификатор строки

Решение

  • использовать якоря YAML, назначая идентификатор привязки для каждой строки в таблице
  • в YAML многоразовые «идентификаторы перехвата» называются якорями и псевдонимами
  • в YAML многоразовые «идентификаторы перехвата» состоят из буквенно-цифровых токенов, предшествующих амперсанду или звездочке

обоснование

  • Ярлыки и псевдонимы YAML позволяют повысить стандартизацию данных
  • Ярлыки и псевдонимы YAML обеспечивают DRY (не повторяйте себя)
  • в этом примере структура таблицы может быть сконструирована и сохранена, что близко совпадает с базой данных

Ловушки

  • Ярлы YAML должны быть объявлены до того, как они будут ссылаться на псевдонимы
  • Якорные якоря должны быть уникальными во всем документе
  • неспособность указать уникальные якоря вызовет ошибку на yaml.load()
  • не все партизаны YAML надежно поддерживают якоря и псевдонимы

Смотрите также

Stackoverflow YAML

Использование псевдонимов YAML для перекрестных ссылок строк из таблицы 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!

проблема

  • разработчик хочет перекрестно ссылаться на строки с якорями из одной таблицы и ссылаться на них с помощью рядов as-aliases в другой таблице

Решение

  • использовать псевдонимы YAML, которые перекрестно ссылаются на заранее определенные привязки из другой таблицы
  • в YAML многоразовые «идентификаторы перехвата» называются якорями и псевдонимами
  • в YAML многоразовые «идентификаторы перехвата» состоят из буквенно-цифровых токенов, предшествующих амперсанду или звездочке

обоснование

  • Ярлыки и псевдонимы YAML позволяют повысить стандартизацию данных
  • Ярлыки и псевдонимы YAML обеспечивают DRY (не повторяйте себя)
  • в этом примере структура таблицы может быть сконструирована и сохранена, что близко совпадает с базой данных
  • в этом примере данные и размеры файлов могут быть уменьшены

Ловушки

  • в этом конкретном примере yaml.load() создаст вложенные словари
    • это называется «проблемой вложенных словарей»,
    • под парой имя-значение человека, значение для человека будет под-словарь
    • это может быть нежелательным, поскольку это нарушает однородность структуры таблицы
  • неспособность правильно указать псевдонимы приведет к отсутствию данных
    • (опечатки создадут сломанные перекрестные ссылки)
  • YAML не поддерживает переключение файлов по ссылке, поэтому все псевдонимы и привязки должны существовать в одном файле yaml
  • не все партизаны YAML надежно поддерживают якоря и псевдонимы

Смотрите также

Stackoverflow YAML

Использование ключей слияния YAML для перекрестных ссылок строк из другой таблицы 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!

проблема

  • разработчик хочет перекрестно ссылаться на строки с якорями из одной таблицы и ссылаться на них с помощью рядов as-aliases в другой таблице
  • разработчик хочет избежать создания «проблемы с вложенными словарями»,

Решение

  • использовать псевдонимы YAML, с ключами слияния YAML
  • в YAML многоразовые «идентификаторы перехвата» называются якорями и псевдонимами
  • в YAML многоразовые «идентификаторы перехвата» состоят из буквенно-цифровых токенов, предшествующих амперсанду или звездочке

обоснование

  • Ярлыки и псевдонимы YAML позволяют повысить стандартизацию данных
  • Ярлыки и псевдонимы YAML обеспечивают DRY (не повторяйте себя)
  • в этом примере структура таблицы может быть сконструирована и сохранена, что близко совпадает с базой данных
  • в этом примере данные и размеры файлов могут быть уменьшены

Ловушки

  • в этом конкретном примере yaml.load() создаст вложенные словари
    • под парой имя-значение человека, значение для человека будет под-словарь
    • это может быть нежелательным, поскольку это нарушает однородность структуры таблицы
  • неспособность правильно указать псевдонимы приведет к отсутствию данных
    • (опечатки создадут сломанные перекрестные ссылки)
  • YAML не поддерживает переключение файлов по ссылке, поэтому все псевдонимы и привязки должны существовать в одном файле yaml
  • не все партизаны YAML надежно поддерживают якоря и псевдонимы

Смотрите также



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow