2012-08-23 15 views
7

मुझे लगता है किडी में @property का उपयोग क्यों करें?

struct PropertyTest 
{ 
    @property int x() { return val; } 
    @property void x(int newVal) { val = newVal; } 

    void test() 
    { 
     int j; 
     j = x; 
     x = 5; 
    } 

private: 
    int val; 
} 

जब मैं @property बाहर छोड़ बिल्कुल वैसा ही करता है कोशिश कर रहा द्वारा पता लगा। सब कुछ ठीक संकलित करता है। @property के रूप में कार्यों को घोषित करने के लिए बिंदु क्या है?

Btw, मैं dmd2 संकलक उपयोग कर रहा हूँ।

+1

फिलहाल संकलक की तुलना में यह भविष्य में हो सकता है और अधिक अनुमोदक है। @property के साथ गेटर्स और सेटर्स को चिह्नित करना भविष्य के सबूत का एक अच्छा तरीका है। यह देखने के लिए कि भविष्य क्या हो सकता है, -प्रोपर्टी के साथ संकलित करें। –

उत्तर

9

@property के बिना वे काम करते हैं क्योंकि @property को संपत्ति विधि वाक्यविन्यास की अनुमति देने के बाद जोड़ा गया था। -property को आपकी डीएमडी कमांड लाइन में जोड़ने से @property एनोटेशन का उपयोग लागू होता है। पिछड़ा संगतता कारणों के लिए यह डिफ़ॉल्ट नहीं है। किसी दिन यह डिफ़ॉल्ट हो जाएगा (या तो वे कहते हैं) तो यह सुनिश्चित करने के लिए कि आप ठीक से टिप्पणी कर रहे हैं, -property के साथ संकलित करना सबसे अच्छा है।

1

यह आप (एक चर पढ़ने की तरह) कोष्ठकों नो आर्ग विधि का उपयोग करने देता है और यह आपको कोष्ठकों के बिना एक एकल आर्ग विधि कॉल की सुविधा देता है, जिस तरह से आप एक चर के लिए आवंटित।

@property int foo() { ... } 
@property void bar(int x) { ... } 

void main() 
{ 
    bar = foo; 
} 

आप संकलक के लिए एक कमांड लाइन विकल्प के रूप में -property निर्दिष्ट करना चाहिए।