2012-01-05 5 views
9

दो लक्षण, इस तरह परिभाषित कर रहे हैं जबक्या बीच का अंतर "क्लास सी बी के साथ एक फैली हुई है" और "क्लास सी बी फैली" जब विशेषता बी विशेषता फैली हुई है एक

trait A 
trait B extends A 

इन के बीच अंतर क्या है दो।

class C extends B 
class D extends A with B 

मुझे नहीं लगता कि यह वर्ग सी या डी के लिए आवश्यक है है के लिए प्रदान विशेषता एक के बाद से विशेषता बी पहले से ही फैली विशेषता ए

क्यों इस बार लिखा "वर्ग डी बी के साथ एक फैली हुई है" क्या है?

उत्तर

6

यह एक बहुत अच्छा सवाल है ... मैं एक व्यक्तिपरक प्रतिक्रिया के उत्तर देने के लिए कोशिश करूंगा।

मुझे लगता है कि फैली AB साथ mixin महत्वपूर्ण है जब पदानुक्रम linearized किया जाएगा, इस विशेष मामले में कोई मतभेद नहीं है वहाँ लगता है लेकिन क्या अगर आप एक और विशेषता E कि एक से कुछ (लेकिन सभी नहीं) कार्य reimplements साथ mixin DD में आपकी आवश्यकताओं के लिए B में अच्छी तरह से सलाह नहीं दी जाती है। तो तुम

class D extends A with E with B 
उस मामले में

इसके अलावा होगा, हम, जिसका अर्थ है कि D एक A

+1

'D' है दोनों ही मामलों में एक' A' रखने क्योंकि 'b' एक है' ए', नहीं? –

+0

यकीन है कि यह है, लेकिन मैं ** की भावना के बारे में बात कर रहा हूं ** (अर्थपूर्ण)। एक्सटेंशन ** के मुकाबले ** ** के करीब है, ** ** की तरह कहा जा सकता है। कलेक्शन पोस्ट 2.8 के साथ कैसे व्यवहार किया जाता है, इस बारे में सोचें, जहां संग्रह कार्य के कार्यान्वयन (foreach) के कार्यान्वयन के लिए नए लक्षण बनाए गए हैं। जो नाम SeqLike हैं, TraversableLike –

+0

पर बहुत बहुत धन्यवाद :) – takhirata