2010-09-01 22 views
16

स्थिरता को परिभाषित करने के लिए फोबोस enum का उपयोग क्यों करता है? उदाहरण के लिए, std.math में:फोबोस स्थिरांक के लिए enum का उपयोग क्यों करता है?

enum real E = 2.7182818284590452354L; 

क्यों एक वैश्विक immutable का उपयोग नहीं? enumimmutable से अधिक फायदे/नुकसान क्या हैं?

उत्तर

22
  1. एक enum केवल एक रैवल्यू है, न कि एक लालसा। इसका कोई पता नहीं है।
  2. एक enum केवल एक संकलन समय स्थिर हो सकता है, रनटाइम स्थिर नहीं।
  3. Enums ऑब्जेक्ट फ़ाइल में कोई भी ब्लोट नहीं जोड़ता है।
  4. Enums तेजी से संकलित करें और संकलन समय पर कम स्मृति का उपयोग करें। आम तौर पर यह नगण्य है, लेकिन यदि आप पर्याप्त जटिल मेटाप्रोग्रामिंग कर रहे हैं तो इससे कोई फर्क नहीं पड़ता।

सामान्य में, चीजें हैं जो संकलन समय स्थिरांक के रूप में स्थिरांक क्रम के लिए विरोध कर रहे हैं के लिए, वहाँ एक enum का उपयोग कर के लिए कोई नुकसान है, और यह अपने इरादों बिल्कुल स्पष्ट कर रहे हैं और मामूली रूप से और अधिक कुशल होने के फायदे हैं।

संपादित करें: enums के लिए एक अन्य उपयोग केस कंपाइलर को असंबद्ध कर सकता है चाहे किसी फ़ंक्शन को रनटाइम या संकलन समय पर मूल्यांकन किया जाना चाहिए। यदि किसी फ़ंक्शन का परिणाम immutable स्टैक वैरिएबल को असाइन किया गया है, तो फ़ंक्शन का रनटाइम पर मूल्यांकन किया जाएगा। यदि आप एक ही दायरे में enum का उपयोग करते हैं, तो परिणाम का संकलन समय पर मूल्यांकन किया जाएगा।

4

डी enum A = B; में आईआईआरसी #define A B सी में समान या कम है। यह हमेशा किसी भी अभिव्यक्ति में शाब्दिक के रूप में उपनिवेश होता है जो इसका उपयोग करता है।

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