खोज…


पंक्ति पहचानकर्ताओं के रूप में 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 एंकर अद्वितीय होने चाहिए
  • विशिष्ट एंकरों को निर्दिष्ट करने में विफलता yaml.load() पर त्रुटि का कारण 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!

मुसीबत

  • डेवलपर एक तालिका से पंक्तियों के साथ-संदर्भों को पार करना चाहता है और उन्हें दूसरी तालिका में पंक्तियों के साथ जोड़ देता है

समाधान

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

मुसीबत

  • डेवलपर एक तालिका से पंक्तियों के साथ-संदर्भों को पार करना चाहता है और उन्हें दूसरी तालिका में पंक्तियों के साथ जोड़ देता है
  • डेवलपर "नेस्टेड डिक्शनरी समस्या" बनाने से बचना चाहता है

समाधान

  • 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