YAML

2011-12-11 19 views
38

मैं चाहता हूँ में कोड का एक खंड का फिर से उपयोग करने के लिए reuse a hash in YAML:YAML

Defaults: &defaults 
    Company: Foo 
    Item: 123 

Computer: *defaults 
    Price: 3000 

बहरहाल, यह एक त्रुटि उत्पन्न करता है।

प्रत्येक फ़ील्ड को अलग-अलग like this को एंकर करने का एकमात्र तरीका है?

Defaults: 
    Company: &company Foo 
    Item: &item 123 

Computer: 
    Company: *company 
    Item: *item 
    Price: 3000 

उत्तर

13
# sequencer protocols for Laser eye surgery 
--- 
- step: &id001     # defines anchor label &id001 
    instrument:  Lasik 2000 
    pulseEnergy:  5.4 
    pulseDuration: 12 
    repetition:  1000 
    spotSize:  1mm 

- step: &id002 
    instrument:  Lasik 2000 
    pulseEnergy:  5.0 
    pulseDuration: 10 
    repetition:  500 
    spotSize:  2mm 

- step: *id001     # refers to the first step (with anchor &id001) 
- step: *id002     # refers to the second step 
- step: *id001 
- step: *id002 

नमूना से wikipedia

+1

गेब्रियल द्वारा जवाब इस को हल करने के लिए एक बेहतर तरीका है मुसीबत। आप एक पूरे समूह का पुन: उपयोग कर सकते हैं, फिर फ़ील्ड (यहां तक ​​कि गहरे फ़ील्ड) को ओवरराइड कर सकते हैं जिन्हें आप अलग करना चाहते हैं। –

172

यह आयात करके एक पूरा समूह पुन: उपयोग का प्रयास करें:

Defaults: &defaults 
    Company: foo 
    Item: 123 

Computer: 
    <<: *defaults 
    Price: 3000 

प्रलेखन: http://yaml.org/type/merge.html

+15

यह वास्तव में स्वीकार्य उत्तर होना चाहिए – Suan

+1

मैं हमेशा इस वाक्यविन्यास को भूल जाता हूं, यह जटिल है। – juanpastas

+0

आईडी अगर मैं कर सकता हूं तो इसे दस लाख तक वोट दें, धन्यवाद –

संबंधित मुद्दे