수색…


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에서 재사용 가능한 "transclusion identifiers"는 앵커 및 별칭이라고 부릅니다.
  • YAML에서 재사용 할 수있는 "중계 식별자"는 앰퍼샌드 또는 별표가 앞에 오는 영숫자 토큰으로 구성됩니다

이론적 해석

  • YAML 앵커 및 별칭으로 데이터 정규화 증가
  • YAML 앵커와 별칭은 DRY 시행합니다 (반복하지 마십시오).
  • 이 예에서 데이터베이스와 가깝게 일치하는 테이블 구조를 설계하고 보존 할 수 있습니다

함정

  • YAML 앵커는 별칭으로 참조되기 전에 선언되어야합니다.
  • YAML 앵커는 문서 전체에서 고유해야합니다.
  • 고유 앵커를 지정하지 않으면 yaml.load() 에서 오류가 발생합니다.
  • 모든 YAML 파서가 앵커와 별칭을 안정적으로 지원하는 것은 아닙니다.

또한보십시오

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!

문제

  • 개발자는 하나의 테이블에서 앵커가있는 행을 상호 참조하고 다른 테이블에서 행 별칭을 사용하여 행에 연결하려고합니다.

해결책

  • 미리 정의 된 앵커를 다른 테이블과 상호 참조하는 YAML 별칭 사용
  • YAML에서 재사용 가능한 "transclusion identifiers"는 앵커 및 별칭이라고 부릅니다.
  • YAML에서 재사용 할 수있는 "중계 식별자"는 앰퍼샌드 또는 별표가 앞에 오는 영숫자 토큰으로 구성됩니다

이론적 해석

  • YAML 앵커 및 별칭으로 데이터 정규화 증가
  • YAML 앵커와 별칭은 DRY 시행합니다 (반복하지 마십시오).
  • 이 예에서 데이터베이스와 가깝게 일치하는 테이블 구조를 설계하고 보존 할 수 있습니다
  • 이 예에서 데이터 입력 및 파일 크기를 줄일 수 있습니다

함정

  • 이 특정 예제에서 yaml.load() 는 중첩 된 사전을 생성합니다.
    • 이를 "중첩 된 사전 문제"라고합니다.
    • person-value 쌍 아래에서, person의 값은 하위 사전이 될 것입니다
    • 이는 테이블 구조의 균일 성을 파괴하기 때문에 바람직하지 않을 수 있습니다.
  • 별칭을 올바르게 지정하지 않으면 데이터가 누락됩니다.
    • (오타가 있으면 상호 참조가 끊어집니다)
  • YAML은 참조에 의한 파일 이동을 지원하지 않으므로 모든 별칭과 앵커가 동일한 yaml 파일에 존재해야합니다
  • 모든 YAML 파서가 앵커와 별칭을 안정적으로 지원하는 것은 아닙니다.

또한보십시오

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!

문제

  • 개발자는 하나의 테이블에서 앵커가있는 행을 상호 참조하고 다른 테이블에서 행 별칭을 사용하여 행에 연결하려고합니다.
  • 개발자는 "중첩 된 사전 문제"를 피하기를 원합니다.

해결책

  • YAML 병합 키를 사용하여 YAML 별칭 사용
  • YAML에서 재사용 가능한 "transclusion identifiers"는 앵커 및 별칭이라고 부릅니다.
  • YAML에서 재사용 할 수있는 "중계 식별자"는 앰퍼샌드 또는 별표가 앞에 오는 영숫자 토큰으로 구성됩니다

이론적 해석

  • YAML 앵커 및 별칭으로 데이터 정규화 증가
  • YAML 앵커와 별칭은 DRY 시행합니다 (반복하지 마십시오).
  • 이 예에서 데이터베이스와 가깝게 일치하는 테이블 구조를 설계하고 보존 할 수 있습니다
  • 이 예에서 데이터 입력 및 파일 크기를 줄일 수 있습니다

함정

  • 이 특정 예제에서 yaml.load() 는 중첩 된 사전을 생성합니다.
    • person-value 쌍 아래에서, person의 값은 하위 사전이 될 것입니다
    • 이는 테이블 구조의 균일 성을 파괴하기 때문에 바람직하지 않을 수 있습니다.
  • 별칭을 올바르게 지정하지 않으면 데이터가 누락됩니다.
    • (오타가 있으면 상호 참조가 끊어집니다)
  • YAML은 참조에 의한 파일 이동을 지원하지 않으므로 모든 별칭과 앵커가 동일한 yaml 파일에 존재해야합니다
  • 모든 YAML 파서가 앵커와 별칭을 안정적으로 지원하는 것은 아닙니다.

또한보십시오



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow