2012-03-26 7 views
8

मैं कई मिले हैं opDot विधि, कि डॉट ऑपरेटर उर्फ ​​सदस्य पहुँच ओवरलोड करने की अनुमति देता है, लेकिन इसके लिए आधिकारिक दस्तावेज गायब है के बारे में उल्लेख है। यह निश्चित रूप से बाहर नहीं छोड़ा गया है, क्योंकि std.typecons.Unique इसका उपयोग करता है।d2: opDot के शब्दों क्या हैं?

क्या कोई जानता है, ओपडॉट का उपयोग कैसे किया जा सकता है, और इसके बारे में कोई दस्तावेज क्यों नहीं है?

+3

इसे आज़माएं: http://www.digitalmars.com/d/archives/digitalmars/D/learn/how_to_use_opdot_14509.html – Raxillan

उत्तर

12

opDotscheduled for deprecation रहा है। यही कारण है कि यह दस्तावेज नहीं है। इसका इस्तेमाल न करें। इसके बजाय alias this का उपयोग करें। आप इतना है कि यह उस प्रकार की तरह काम कर सकते हैं एक विशेष प्रकार के एक विशेष प्रकार या समारोह अन्य नाम पर इसका इस्तेमाल कर सकते हैं। जैसे

struct S 
{ 
    int value; 
    alias value this; 
} 

यह कर देगा ताकि प्रकार S के एक चर परोक्ष int में बदलने का उपयोग कर S के value क्षेत्र होगा। आप भी कर सकते हैं उर्फ ​​कार्यों कि जिस तरह से:

struct S 
{ 
    int get() 
    { 
     return 7; 
    } 

    alias get this; 
} 

कि हालांकि, डीएमडी वर्तमान में एक प्रकार के लिए कई alias this तों होने का समर्थन नहीं करता क्योंकि सीमित अधिक हो सकता है (यह अंततः हालांकि चाहिए)। इस मामले में, आप तो परोक्ष S एक एक int लिए डाली, लेकिन नहीं रिवर्स कर सकते हैं। Regarldess, alias this अंतर्निहित रूपांतरण को लागू करने के लिए है।

यदि alias this काफी कुछ नहीं है जो आप चाहते हैं, तो एक और संभावना opDispatch है। यह आपको अन्य सामानों में डॉट के दाईं ओर जो कुछ भी बदलता है उसे बदलने की अनुमति देता है (उदाहरण के लिए सभी कॉल foo को bar में बदलें)। लेकिन, उन दोनों के बीच, आप काफी कुछ भी आप opDot साथ करने की सोच रहे थे (और एक बहुत अधिक के अलावा) ऐसा करने में सक्षम होना चाहिए।

+0

धन्यवाद, बहुत स्पष्ट उत्तर! – toriningen

संबंधित मुद्दे