जो मैं समझता हूं, निम में तार मूल रूप से बाइट्स का एक उत्परिवर्तनीय अनुक्रम होते हैं और इन्हें असाइनमेंट पर कॉपी किया जाता है।निम में तार क्या हैं?
यह देखते हुए कि, मैं मान लिया है कि sizeof
मुझे (जैसे len
) बाइट की संख्या कहते थे, लेकिन इसके बजाय यह हमेशा मेरे 64-बिट मशीन पर 8
देता है, तो यह एक सूचक पकड़े जा रहा है।
यह देखते हुए कि, मैं निम्नलिखित प्रश्न हैं ...
काम पर प्रतिलिपि के पीछे प्रेरणा क्या था? क्या ऐसा इसलिए है क्योंकि वे उत्परिवर्तनीय हैं?
क्या कभी ऐसा समय होता है जब इसे आवंटित किए जाने पर कॉपी नहीं किया जाता है? (मुझे लगता है कि गैर-
var
फ़ंक्शन पैरामीटर कॉपी नहीं करते हैं। कुछ और?)क्या वे इस तरह अनुकूलित हैं कि वे वास्तव में प्रतिलिपि किए जाते हैं यदि वे उत्परिवर्तित होते हैं?
क्या स्ट्रिंग और अनुक्रम के बीच कोई महत्वपूर्ण अंतर है, या उपरोक्त प्रश्नों के उत्तर सभी अनुक्रमों पर समान रूप से लागू हो सकते हैं?
सामान्य मूल्य में कुछ और ध्यान देने योग्य?
धन्यवाद!
निम स्ट्रिंग परिभाषा जीवन [GitHub पर] (https:
आप उन्हें के रूप में उथले चिह्नित करके तार और seqs की डिफ़ॉल्ट असाइनमेंट व्यवहार को बदल सकते, तो कोई प्रतिलिपि काम पर किया जाता है: //github.com/Araq/Nim/blob/master/lib/system.nim#L56) जो यह समझाने में सहायता कर सकता है कि यह रिपोर्ट करता है कि यह रिपोर्ट क्यों करता है। –
@ माइक'पोमैक्स 'कमरमैन: लिंक के लिए धन्यवाद, लेकिन मुझे नहीं पता कि' स्ट्रिंग * {। मैजिक: स्ट्रिंग।} 'मुझे क्या बताने की कोशिश कर रहा है। ;-) –
हाँ, मुझे खुद को भी यकीन नहीं है, बस यह पता लगाया जा सकता है कि प्रश्नों में यह जानने के लिए अच्छी जानकारी हो सकती है कि हमारे लिए क्या हो रहा है यह जानने में लोगों के लिए एक संभावित लीड =) –