मिक्सिन्स और ट्रिट्स में क्या अंतर है?
विकिपीडिया के अनुसार , रूबी मॉड्यूल गुण की तरह हैं। ऐसा कैसे?
मिक्सिन्स और ट्रिट्स में क्या अंतर है?
विकिपीडिया के अनुसार , रूबी मॉड्यूल गुण की तरह हैं। ऐसा कैसे?
जवाबों:
ad 1. मिश्रणों में आप उदाहरण चर को परिभाषित कर सकते हैं। लक्षण इसकी अनुमति नहीं देते हैं। राज्य को वर्ग (= गुण का उपयोग करके वर्ग) प्रदान करके प्रदान किया जाना चाहिए
ad 2.
नाम संघर्ष हो सकता है। दो मिश्रण ( MA
और MB
) या लक्षण ( TA
और TB
) एक ही परिभाषा के साथ विधि को परिभाषित करते हैं foo():void
।
Mixin MA {
foo():void {
print 'hello'
}
}
Mixin MB {
foo():void {
print 'bye'
}
}
Trait TA {
foo():void {
print 'hello'
}
}
Trait TB {
foo():void {
print 'bye'
}
}
मिक्सिन्स में कंपोजिंग क्लास में होने वाली उलझनों C mixins MA, MB
को सुलझाया जाता है।
Class C mixins MA, MB {
bar():void {
foo();
}
}
यह फोन करेगा foo():void
सेMA
दूसरी ओर, ट्रिट्स का उपयोग करते समय, कंपोजिंग क्लास को संघर्षों को हल करना होगा।
Class C mixins TA, TB {
bar():void {
foo();
}
}
यह कोड संघर्ष (दो परिभाषाएँ foo():void
) को बढ़ाएगा ।
ad 3. किसी पद्धति का शब्दार्थ इस बात पर निर्भर नहीं करता है कि यह किसी विशेषता में या उस वर्ग में परिभाषित किया गया है जो लक्षण का उपयोग करता है।
दूसरे शब्दों में, यह मायने नहीं रखता है कि वर्ग में गुण होते हैं या लक्षण कोड "कॉपी - पेस्ट" है।
ये पृष्ठ डी प्रोग्रामिंग भाषा में अंतर को स्पष्ट करते हैं।
इस संदर्भ में मिश्रण मक्खी पर उत्पन्न कोड हैं, और फिर संकलन के दौरान कोड में उस बिंदु पर डाला जाता है। सरल डीएसएल के लिए काफी आसान है।
लक्षण समय-बाह्य बाह्य मान हैं (बजाय बाहरी स्रोत से उत्पन्न कोड के)। अंतर सूक्ष्म है। मिक्स तर्क जोड़ते हैं, लक्षण संकलन-समय प्रकार की जानकारी जैसे डेटा जोड़ते हैं।
रूबी के बारे में ज्यादा नहीं जानते, लेकिन उम्मीद है कि इससे कुछ मदद मिलेगी।