मैंने सीखा कि यदि एक चर को स्पष्ट रूप से का उपयोग करके उत्परिवर्तनीय घोषित नहीं किया गया है, तो यह अपरिवर्तनीय हो जाता है (इसे घोषणा के बाद बदला नहीं जा सकता है)। तो हमारे पास जंग में const
कीवर्ड क्यों है? क्या वे समान नहीं हैं? यदि नहीं, तो वे अलग कैसे होते हैं?जंग में अपरिवर्तनीय और स्थिर चर के बीच क्या अंतर है?
उत्तर
const
, जंग में, निरंतर के लिए कम है और संकलन समय मूल्यांकन से संबंधित है। यह दिखाता है:
- जब घोषित स्थिरांक:
const FOO: usize = 3;
- जब घोषित संकलन समय मूल्यांकित कार्य:
const fn foo() -> &'static str
मूल्यों के इन प्रकार के सामान्य पैरामीटर के रूप में इस्तेमाल किया जा सकता: [u8; FOO]
। अभी के लिए यह सरणी आकार तक सीमित है, लेकिन भविष्य में इसे आगे बढ़ाने की बात, योजनाएं और आशा है।
इसके विपरीत, let
बाध्यकारी एक रन-टाइम गणना मूल्य के बारे में है।
ध्यान दें कि mut
के बावजूद उपयोग किया जा रहा है क्योंकि उत्परिवर्तन की अवधारणा अच्छी तरह से जानी जाती है, जंग वास्तव में यहां निहित है। &T
और &mut T
अलियासिंग के बारे में कर रहे हैं, नहीं अस्थिरता:
&T
: साझा संदर्भ&mut T
: अनन्य संदर्भ
सबसे विशेष रूप से, कुछ प्रकार के आंतरिक अस्थिरता की सुविधा है और &T
के माध्यम से उत्परिवर्तित जा सकता है (साझा संदर्भ): Cell
, RefCell
, Mutex
, आदि
नोट: वहाँ mut
और const
कच्चे संकेत (*mut T
और *const T
) जो यहाँ पर चर्चा नहीं कर रहा है के साथ का एक वैकल्पिक इस्तेमाल होता है।
const
संकलन-समय स्थिरांक के लिए जो कुछ भी शामिल है, के साथ है। उदाहरण के लिए, आप एक निश्चित आकार का सरणी बना सकते हैं जिसका आकार const
है, लेकिन आप let
बाध्यकारी के साथ ऐसा नहीं कर सकते हैं। बेशक, इसका यह भी अर्थ है कि आप की तुलना में let
बाध्यकारी में दूर, कहीं और चीजें डाल सकते हैं।
const
चर के लिए नहीं है; यह निरंतर मानों के लिए है जो कहीं भी संग्रहीत नहीं किए जा सकते हैं; वे एक शाब्दिक मूल्य के लिए प्रभावी रूप से एक उपनाम हैं।
गैर mut
let
वाणी एक वास्तविक चर जो रनटाइम पर बनाई गई है, ले जाया जा सकता है (और नहीं पहुँच), और यहां तक कि आंतरिक अस्थिरता है कुछ मामलों में (अगर यह Cell
सदस्यों, उदाहरण के लिए शामिल हैं)।
स्थिरांक नए सिरे से परिभाषित नहीं किया जा सकता:
let x = 10u32;
const Y:u32 = 20u32;
let x = 11u32;
//error: duplicate definition of value `Y` [E0428]
//const Y:u32 = 21u32;
println!("x={} Y={}",x,Y); //x=11 Y=20
- 1. स्थिर स्थिरांक और constexpr चर के बीच क्या अंतर है?
- 2. डी में कॉन्स और अपरिवर्तनीय के बीच क्या अंतर है?
- 3. परिवर्तनीय और अपरिवर्तनीय के बीच क्या अंतर है?
- 4. सदस्य चर और स्थानीय चर के बीच क्या अंतर है?
- 5. अंतिम चर के बीच अंतर और संकलन समय स्थिर
- 6. जंग के 'स्ट्रिंग' और 'str` के बीच अंतर क्या हैं?
- 7. सी में स्थिर और सी ++ में स्थिर के बीच अंतर ??
- 8. सार्वजनिक स्थिर और निजी स्थैतिक चर के बीच अंतर
- 9. क्या बीच का अंतर है परिवर्तनशील और अपरिवर्तनीय
- 10. सी # में कॉन्स और स्टेटिक के बीच क्या अंतर है?
- 11. गहरे और उथले स्थिर विश्लेषण के बीच क्या अंतर है?
- 12. स्थिर संरचना और सामान्य संरचना के बीच क्या अंतर है?
- 13. स्थिर इनलाइन शून्य और शून्य के बीच क्या अंतर है?
- 14. "विरासत संस्करण" और "स्थिर संस्करण" के बीच क्या अंतर है?
- 15. स्थिर int int और int के बीच क्या अंतर है?
- 16. स्थिर स्थिरांक और कॉन्स के बीच क्या अंतर है?
- 17. स्थिर, आंतरिक और सार्वजनिक रचनाकारों के बीच क्या अंतर है?
- 18. स्थिर और गतिशील बाध्यकारी के बीच क्या अंतर है?
- 19. स्थिर और साझा पुस्तकालयों के बीच अंतर?
- 20. PHP- वैश्विक चर और स्थिरांक के बीच क्या अंतर है
- 21. हस्ताक्षरित और हस्ताक्षरित चर के बीच क्या अंतर है?
- 22. किसी संपत्ति और आवृत्ति चर के बीच क्या अंतर है?
- 23. PHP चर में सत्र चर और वैश्विक चर के बीच क्या अंतर है?
- 24. "$^एन" और "$ +" के बीच क्या अंतर है?
- 25. "const" और "val" के बीच क्या अंतर है?
- 26. रूबी में एसटीडीआईएन और $ स्टडीन के बीच क्या अंतर है?
- 27. % चर% और चर के बीच अंतर! बैच फ़ाइल में
- 28. भिन्नता और '-' के बीच क्या अंतर है?
- 29. हास्केल में अपरिवर्तनीय चर क्या है?
- 30. सी ++ बनाम सी # में स्थिर चर के बीच क्या अंतर है?