एक सीलबंद विशेषता एक मुहरबंद कक्षा के समान है?
जहां तक sealed
चला जाता है, हाँ। वे trait
और class
के बीच सामान्य अंतर साझा करते हैं।
या, यदि नहीं, तो मतभेद क्या हैं?
म्यूट।
एक सीलबंद विशेषता (और कब नहीं) का उपयोग करना एक अच्छा विचार कब है?
आप एक sealed class X
है, तो आप X
साथ ही किसी भी उपवर्गों की जांच करने के लिए है। यह sealed abstract class X
या sealed trait X
के बारे में भी सच नहीं है। तो आप sealed abstract class X
कर सकते हैं, लेकिन यह trait
की तुलना में और अधिक लाभ के लिए और अधिक verbose है।
का उपयोग trait
पर करने का मुख्य लाभ यह है कि यह पैरामीटर प्राप्त कर सकता है। टाइप क्लास का उपयोग करते समय यह लाभ विशेष रूप से प्रासंगिक होता है। मान लीजिए कि आप एक क्रमबद्ध पेड़ बनाना चाहते हैं, उदाहरण के लिए।आप यह लिख सकते हैं:
sealed abstract class Tree[T : Ordering]
लेकिन यदि आप ऐसा नहीं कर सकते हैं:
sealed trait Tree[T : Ordering]
संदर्भ सीमा (और देखने सीमा) के बाद से अंतर्निहित मानकों के साथ लागू किया जाता है। यह देखते हुए कि लक्षण पैरामीटर प्राप्त नहीं कर सकते हैं, आप ऐसा नहीं कर सकते हैं।
व्यक्तिगत रूप से, मैं sealed trait
पसंद करता हूं और इसका उपयोग तब तक करता हूं जब तक कि कोई विशेष कारण मुझे sealed abstract class
का उपयोग नहीं करता है। और मैं सूक्ष्म कारणों के बारे में बात नहीं कर रहा हूं, लेकिन आपके सामने के कारणों से आप अनदेखा नहीं कर सकते हैं, जैसे टाइप क्लासेस का उपयोग करना।
स्रोत
2012-06-26 16:48:33
धन्यवाद। "इसके सभी उप-वर्गों" के साथ इसका मतलब वर्ग और गुण है? –
डाउनवॉटेड क्यों? –
@ जॉन - मैंने कोशिश नहीं की है, लेकिन मुझे कक्षाओं पर संदेह है। सीलिंग के बारे में बात यह है कि सब कुछ उस स्रोत इकाई –