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
मुसीबत
- डेवलपर YAML में एक टेबल संरचना व्यक्त करना चाहता है, जहां प्रत्येक पंक्ति को एक कॉम्पैक्ट पंक्ति पहचानकर्ता द्वारा संदर्भित किया जाता है
समाधान
- तालिका में प्रत्येक पंक्ति के लिए एक लंगर पहचानकर्ता असाइन करके YAML एंकर का उपयोग करें
- YAML में, पुन: प्रयोज्य "ट्रांस्क्लूशन आइडेंटिफ़ायर" को एंकर और उपनाम कहा जाता है
- YAML में, पुन: प्रयोज्य "ट्रांसकॉर्पोरेशन आइडेंटीज़र्स" में एक एम्परसेंड या तारांकन से पहले अल्फ़ान्यूमेरिक टोकन शामिल हैं
दलील
- YAML एंकर और उपनाम वृद्धि हुई डेटा सामान्यीकरण के लिए अनुमति देते हैं
- YAML एंकर और उपनाम
DRYलागू करते हैं (अपने आप को दोहराएं नहीं) - इस उदाहरण में, एक तालिका संरचना को डिज़ाइन किया जा सकता है और संरक्षित किया जा सकता है जो डेटाबेस के साथ निकटता से मेल खाता है
नुकसान
- YAML एंकरों को एलियास द्वारा संदर्भित किए जाने से पहले घोषित किया जाना चाहिए
- दस्तावेज़ में YAML एंकर अद्वितीय होने चाहिए
- विशिष्ट एंकरों को निर्दिष्ट करने में विफलता
yaml.load()पर त्रुटि का कारणyaml.load() - सभी 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 पार्सर्स मज़बूती से लंगर और उपनाम का समर्थन नहीं करते हैं
यह सभी देखें
एक और 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