रनटाइम पर परिभाषित विधियों से संबंधित मॉड्यूल को आवश्यकतानुसार शामिल करने की तकनीक है। मैं एक रेल एप्लिकेशन पर काम करता हूं जहां हमें कभी-कभी विभिन्न प्रारूपों में डेटा निर्यात करना पड़ता है। समय के 99%, फार्म वस्तु निर्यात से संबंधित तरीकों की जरूरत नहीं है, लेकिन हमारे निर्यात रैक काम में, हम जैसे कुछ कार्य करें:
Form.send(:include, FormExportingMethods)
तो यह केवल उन तरीकों है जब यह उन्हें जरूरत है।
इस तरह की गतिशीलता रूबी के बारे में मुझे पसंद है। जबकि कुछ भाषाओं में, आपको अपनी कक्षाओं और वस्तुओं को सामने रखना होगा, रूबी आपको कहने देता है "ओह, मुझे अपने सुअर को अभी पंख रखने की ज़रूरत है? मैं उन्हें बस संलग्न करूंगा।"
मेरे उदाहरण में नोटिस कि विशिष्ट फॉर्म ऑब्जेक्ट्स को संशोधित नहीं किया जा रहा है; फॉर्म क्लास है। यह काम करता है क्योंकि, जब आप किसी ऑब्जेक्ट को संदेश भेजते हैं, तो यह पर पूछे जाने पर प्रतिक्रिया प्रतिक्रिया के लिए अपनी विधि लुकअप श्रृंखला की खोज करता है। तो आप एक ऑब्जेक्ट बना सकते हैं, फिर अपनी विरासत श्रृंखला में कहीं भी एक विधि जोड़ सकते हैं, फिर ऑब्जेक्ट पर विधि को कॉल करें, और इसमें यह होगा। जाहिर है, प्रत्येक विधि कॉल के लिए पूरी विरासत श्रृंखला को देखना महंगा है, लेकिन यह इस तरह की लचीलापन के लिए एक व्यापार बंद है।
स्रोत
2011-03-27 01:05:01
पर परिभाषित किया गया है, मुझे आपका #attack उदाहरण पसंद है। धन्यवाद। –