में उच्च प्रकार के, खुले प्रकार के और जंगली कार्ड जेनेरिक, मैं सी # में प्रोग्रामिंग कर रहा था, लेकिन इसकी टाइप सिस्टम की सीमाओं से निराश था। पहली बातों में से एक, मैंने स्कैला के बारे में सीखा था कि स्कैला में उच्च प्रकार की जेनेरिक है। लेकिन जब भी मैंने कई लेखों, ब्लॉग प्रविष्टियों और प्रश्नों को देखा, तब भी मुझे यकीन नहीं था कि उच्च प्रकार के जेनेरिक क्या थे। वैसे भी मैंने कुछ स्कैला कोड लिखा था जो ठीक संकलित, क्या यह स्निपेट उच्च प्रकार का उपयोग करता है?स्कैला: जावा, सी #, स्कैला और सी ++
abstract class Descrip [T <: DTypes, GeomT[_ <: DTypes] <: GeomBase[_]](newGeom: NewGeom[GeomT])
{
type GeomType = GeomT[T]
val geomM: GeomT[T] = newGeom.apply[T]()
}
और फिर मैं शायद सोचा था कि मैं पहले से ही उच्च kinded जेनरिक उपयोग कर रहा हूँ। जैसा कि मैं समझता हूं कि मैं था, लेकिन तब जब मैं अब समझ गया था कि मैं पहले से ही स्काला के बारे में भी सुना था, मैं पहले से ही उच्च प्रकार के प्रकारों का उपयोग कर रहा था। क्या यह स्निपेट उच्च प्रकार के प्रकार का उपयोग करता है?
namespace ConsoleApplication3
{
class Class1<T>
{
List<List<T>> listlist;
}
}
तो आगे भ्रम मैंने सोचा कि यह जावा, सी # और स्काला से प्रत्येक क्या वे kinded प्रकार, वाइल्ड कार्ड और खुला/आंशिक रूप से खुला प्रकार के उपयोग के उच्चतर के मामले में अनुमति देने के लिए स्पष्ट करने के लिए उपयोगी होगा बचने के लिए। चूंकि सी # और स्कैला के बीच महत्वपूर्ण अंतर यह लगता है कि स्कैला जंगली कार्ड और खुले प्रकार की अनुमति देता है, जहां सी # में कोई जंगली कार्ड नहीं है और उपयोग से पहले सभी सामान्य प्रकारों को बंद करने की आवश्यकता होती है। मुझे पता है कि वे कुछ अलग हैं लेकिन मुझे लगता है कि इन सुविधाओं के अस्तित्व को सी ++ टेम्पलेट्स में उनके समकक्ष से जोड़ना उपयोगी होगा।
तो क्या निम्न सही है? इस तालिका में एलेक्सी का जवाब
Lang: Higher-kind Wild-card Open-types
Scala yes yes yes
C# no no no
Java no yes no
C++ yes yes yes
आपका प्रश्न क्या है? –
क्या टेबल नीचे सही है? अगर कोई इसे बेहतर प्रारूपित कर सकता है तो कृपया करें? –
आपने सी # में जो लिखा है वह जावा में उपलब्ध है, न कि उच्च दयालु। उपरोक्त जिओएमटी पैरामीटर के साथ आपकी कक्षा है। Http://stackoverflow.com/a/10499788/754787 देखें। –