2011-12-31 11 views
7

मैं सी # से डी तक हमारे reign SDK को पोर्टिंग, बढ़ाने और डी-एटलाइज़ करने की प्रक्रिया में हूं। वर्तमान में वेक्टर 2 गणित मॉड्यूल पर काम कर रहा है।डी प्रदर्शन: यूनियन बनाम @property

क्या नीचे दो structs के बीच कोई प्रदर्शन अंतर होगा? मेरे बेंचमार्क समान प्रदर्शन दिखाने के लिए, लेकिन मैं विशेषज्ञ अंतर्दृष्टि का एक सा :)

struct Vector2(T) 
{ 
    T x, y; 
    @property T u() { return x; } 
    @property T v() { return y; } 
    @property void u(T value) { x = value; } 
    @property void v(T value) { y = value; } 
} 

struct Vector2(T) 
{ 
    union { T x, u; } 
    union { T y, v; } 
} 

जाहिर है मैं वाक्य-सादगी के लिए यूनियनों उपयोग करना चाहते हैं हासिल करने के लिए करना चाहते हैं। लेकिन क्या उनका उपयोग करने के साथ कोई अप्रत्याशित नुकसान है? मैं उनके निम्न स्तर के विवरण से अपरिचित हूं।

एक तरफ ध्यान दें, मैं एचएलएसएल/जीएलएसएल के समान वेक्टर प्रॉपर्टी सिंटैक्स में जोड़ रहा हूं, उदाहरण के लिए, vec1.yxz + = vec2.xyz; वहाँ है ... नहीं .. @property के बजाय संघों के साथ ऐसा करने का संभव तरीका है?

+0

आपको 'vec1.yxz + = vec2.xyz' के लिए opDispatch की आवश्यकता होगी, और मेरा मानना ​​है कि किसी ने पहले ही यह किया है। – kennytm

+2

@ केनीटीएम - आप सही हैं - https://bitbucket.org/dav1d/gljm और https://bitbucket.org/dav1d/gl3n – DejanLekic

उत्तर

13

alias का उपयोग करें!

struct Vector2(T) 
{ 
    T x, y; 
    alias x u; 
    alias y v; 
} 
+0

दोह! ... मुझे यह पता होना चाहिए था। धन्यवाद! –

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