ट्रैवर्सबल और ट्रैवर्सबल के लिए स्केलैडोक को देखते हुए, मुझे यह पता लगाना मुश्किल हो रहा है कि उनके बीच क्या अंतर है (सिवाय इसके कि कोई दूसरा विस्तार करता है)। दस्तावेज़ीकरण में एकमात्र स्पष्ट अंतर यह है कि यह कहता है कि ट्रैवर्सबल एक "विशेषता" है और ट्रैवर्सबल लाइक एक "टेम्पलेट विशेषता" है। लेकिन "टेम्पलेट विशेषता" के लिए googling इस शब्द के लिए एक परिभाषा प्रकट नहीं करता है। मदद!"विशेषता" और "टेम्पलेट विशेषता" के बीच क्या अंतर है?
उत्तर
मैंने स्कैला में सामान्य उपयोग में इस शब्दावली को नहीं देखा है, और मुझे लगता है कि यह स्कैला संग्रह API के डिज़ाइन के लिए विशिष्ट है। आप The Architecture of Scala Collections (विशेष रूप से "सामान्य परिचालनों को फैक्टरिंग" पर अनुभाग) [1] और the Scala collections SID पढ़कर और जान सकते हैं।
ऐसे traversable या वेक्टर के रूप मेंसंग्रह कक्षाएं एक कार्यान्वयन विशेषता से सभी उनके ठोस विधि कार्यान्वयन के वारिस: हालांकि वे के रूप में "कार्यान्वयन लक्षण" वहाँ के लिए भेजा रहे सिड की §4.2, प्रासंगिक है। इन लक्षणों का नाम लाइक पीफ एक्स के साथ रखा गया है; उदाहरण के लिए वेक्टर लॉइक वेक्टर और ट्रैवर्सबल के लिए कार्यान्वयन विशेषता है ट्रैवर्सबल के लिए कार्यान्वयन विशेषता है।
संक्षेप में, अपने उद्देश्य संग्रह पदानुक्रम के बाहर उपयोग के लिए अलग कार्यान्वयन के लिए दोनों है (उदाहरण के StringOps
TraversableLike
नहीं बल्कि Traversable
फैली) और इस तरह से कि संग्रह प्रकार संरक्षित रखा जाता है में आम अभियान कारक (IttayD's answer देखना एक और पूरी तरह से स्पष्टीकरण के लिए)।
मुझे ध्यान रखना चाहिए कि जब तक आप संग्रह पदानुक्रम को विस्तारित नहीं कर रहे हैं, तब तक आपको इन कक्षाओं से संबंधित होने की आवश्यकता नहीं है। सामान्य उपयोग के लिए, Traversable
, Iterable
, Seq
, आदि लक्षणों पर ध्यान केंद्रित करें। यदि आप स्कैला कलेक्शन एपीआई में नए हैं, तो मैं Scala 2.8 Collection API document से शुरू करने का सुझाव दूंगा, फिर आवश्यकतानुसार scaladoc का संदर्भ लें। आप स्कालाडोक के माध्यम से देख रहे 'बड़ी तस्वीर' पाने की उम्मीद नहीं कर सकते हैं।
[1] क्रेडिट इस लिंक
XXXLike लक्षण Repr सामान्य पैरामीटर जोड़ने का एक महत्वपूर्ण भूमिका के लिए michid को जाता है। विधियों को एक ही संग्रह प्रकार को वापस करने के लिए माना जाता है, जैसे फ़िल्टर, मानचित्र, फ्लैटमैप, निम्न स्तर के लक्षणों (ट्रैवर्सबल लाइक) में कार्यान्वित किए जाते हैं। उनकी वापसी प्रकार सांकेतिक शब्दों में बदलना करने के लिए, उन लक्षण इसे प्राप्त:
trait TraversableLike[+A, +Repr] ...
...
def filter(p: A => Boolean): Repr = {
(नक्शा और flatMap के लिए इस मुद्दे को अधिक जटिल है, मैं इस पर यहाँ नहीं जाना होगा)
अब मान लीजिए कि आप के एक नए प्रकार है संग्रह। आप कर सकता है:
trait MyCollection[+A] extends TraversableLike[A, MyCollection]
लेकिन फिर अगर कोई अपने संग्रह का विस्तार करने के लिए करना चाहता है, वे विभिन्न विरासत में मिला तरीकों से MyCollection की वापसी मान के साथ फंस रहे हैं।
बजाय, आपके द्वारा बनाए गए:
trait MyCollectionLike[+A, +Repr] extends TraversableLike[A, Repr]
और
trait MyCollection[+A] extends MyCollectionLike[A, MyCollection]
और किसी को भी अपने संकलन को बढ़ाएं करना चाहता है कि फैली MyCollectionLike
IttayD, यह स्कैला वेबसाइट पर अक्सर पूछे जाने वाले प्रश्न # 1 होना चाहिए। इस "इस विधि के वापसी प्रकार विरासत वर्ग के समान हैं" को कम करने के कम से कम तीन अलग-अलग तरीके हैं - यह जानकर कि स्कैला संग्रह पुस्तकालय (और इसलिए संभावित रूप से पसंदीदा तंत्र) के लिए कौन सा उपयोग किया गया था अधिक स्कैला शुरुआती दिखाना चाहिए। – Adam
[...] की तरह कक्षाएं कार्यान्वयन वर्ग हैं वास्तविक संग्रह कक्षाओं के लिए।एक अर्थ में वे टेम्पलेट कार्यान्वयन की तरह कार्य करते हैं, जिनमें से अधिकांश - यदि सभी नहीं - वास्तविक संग्रह वर्गों द्वारा व्यवहार विरासत में मिलता है।
बहुत विस्तृत और पहुंच योग्य अवलोकन के लिए The Architecture of Scala Collections पढ़ें।
- 1. फ़ंक्शन टेम्पलेट और टेम्पलेट फ़ंक्शन के बीच क्या अंतर है?
- 2. jQuery के ऑनक्लिक और ऑनक्लिक विशेषता का उपयोग करने के बीच क्या अंतर है?
- 3. HTML में ऑनर और ऑन चेंज विशेषता के बीच क्या अंतर है?
- 4. दिशा (एलटीआर/आरटीएल): सीएसएस दिशा और एचटीएमएल दिशा विशेषता के बीच क्या अंतर है?
- 5. Serializable विशेषता का उपयोग करने और ISerializable लागू करने के बीच क्या अंतर है?
- 6. थीम और टेम्पलेट के बीच क्या अंतर है?
- 7. और क्या स्काला मुहावरेदार है: विशेषता TraitA फैली TraitB या विशेषता TraitA {स्वयं: TraitB =>}
- 8. स्टाइल और कंट्रोल टेम्पलेट के बीच अंतर
- 9. antiJARLocking विशेषता क्या है?
- 10. सी # और CLSCompliant विशेषता
- 11. DropDownListFor विशेषता विशेषता के साथ एक कस्टम विशेषता के साथ?
- 12. NSKeyValueObservingOptionNew और NSKeyValueObservingOptionOld के बीच क्या अंतर है?
- 13. एक्सएसडी में आईडीआरईएफ और आईडीआरएफएस के बीच क्या अंतर है?
- 14. वीएस परीक्षण फ्रेमवर्क बनाम testInitialize() विशेषता में कन्स्ट्रक्टर का उपयोग करने के बीच क्या अंतर है?
- 15. प्रदर्शन विशेषता से DisplayName विशेषता का लाभ क्या है?
- 16. एफ # में IDelegateEvent और IEvent के बीच क्या अंतर है?
- 17. विशेषता
- 18. विशेषता
- 19. विशेषता पंजीकृत नहीं है: विशेषता का नाम
- 20. एक सीलबंद विशेषता क्या है?
- 21. विशेषता
- 22. sysfs_create_file() और sysfs_create_group() के बीच क्या अंतर है?
- 23. document.getElementById ('mybox') और mybox के बीच क्या अंतर है?
- 24. विशेषता
- 25. विशेषता
- 26. एक विशेषता
- 27. xmlns विशेषता क्या करती है?
- 28. क्या बीच का अंतर "क्लास सी बी के साथ एक फैली हुई है" और "क्लास सी बी फैली" जब विशेषता बी विशेषता फैली हुई है एक
- 29. दृश्यता सवाल विशेषता
- 30. xsl में नियमित अभिव्यक्तियां: टेम्पलेट मिलान विशेषता
आपके उत्कृष्ट उत्तर के लिए धन्यवाद! हालांकि, आखिरी वाक्य ने मुझे थोड़ा सा दुख लगाया: "आप स्कालाडोक के माध्यम से 'बड़ी तस्वीर' पाने की उम्मीद नहीं कर सकते हैं" - कितना दुर्भाग्यपूर्ण ... मुझे लगता है कि जावा मानक पुस्तकालय के मामले में (कम से कम "कोर" पैकेज java.lang, java.util, आदि के लिए जो 1.1 के आसपास से हैं) कि मैं जावडोक को देखकर बड़ी तस्वीर प्राप्त करने में सक्षम था। – Adam