YAML

2009-12-01 13 views
6

के साथ क्रमबद्ध ऑब्जेक्ट लोड करते समय प्रारंभ करना कॉल करना क्या YAML.load_file का उपयोग करते समय रूबी को प्रारंभिक विधि कॉल करने के लिए मजबूर करना संभव है? उदाहरण के चर के लिए मान प्रदान करने के लिए मैं विधि को कॉल करना चाहता हूं, जिसे मैं क्रमबद्ध नहीं करता हूं। मुझे पता है कि मैं कोड को एक अलग तरीके से कारक कर सकता हूं और YAML.load_file को कॉल करने के बाद उस विधि को कॉल कर सकता हूं, लेकिन मैं सोच रहा था कि इस समस्या को संभालने का एक और शानदार तरीका था या नहीं।YAML

+0

आप के बारे में थोड़ा और समझा सकते हैं आप कार्य करना चाहते हैं क्या? मेरा पहला झुकाव एक वर्ग बनाना है जो कॉल को load_file पर लपेटता है और फिर उन मानों को प्रदान करता है जो कॉन्फ़िगरेशन फ़ाइल में मौजूद नहीं हैं। मैं एक और पूरा समाधान प्रदान करने में सक्षम होना चाहता हूं। –

उत्तर

3

मुझे नहीं लगता कि आप कर सकते हैं। चूंकि आप जो कोड जोड़ देंगे, वह कक्षा के लिए वास्तव में विशिष्ट है, आपको कक्षा में सुविधा जोड़ने पर विचार करना चाहिए। उदाहरण के लिए, Foo वर्ग आप deserialize करना चाहते हैं, तो आप इस तरह के रूप में एक वर्ग विधि जोड़ सकते हैं रहने दो:

class Foo 
    def self.from_yaml(yaml) 
    foo = YAML::load(yaml) 
    # edit the foo object here 
    foo 
    end 
end 

myFoo = Foo.from_yaml("myFoo.yaml") 
संबंधित मुद्दे