में $ NewSymbol के साथ संदर्भों को स्थानांतरित करना मैं $NewSymbol
के साथ this question के उत्तर देने के लिए कुछ खोजने का प्रयास कर रहा था। पहले प्रतीक बनाने से The docs say thatगणित
$ NewSymbol लागू किया जाता है। यदि $ NewSymbol की क्रिया को बनाने के लिए प्रतीक का कारण बनता है, शायद संदर्भ में, तो बनाया गया प्रतीक उपयोग किया जाएगा।
तो मैं स्वचालित रूप से एक परीक्षण के संदर्भ Global`*
संदर्भ में इसके निर्माण रोकने चाहिए में एक विशेष नया प्रतीक स्थानांतरित करने के लिए कोशिश की, लेकिन प्रतीक दोनों संदर्भों में बनाया जाता है।
In[1]:= Remove["Global`*"]
In[2]:= $NewSymbol=(Print[#1," : ",#2];
If[#1==="aLongTestSymbolName"&==="Global`",
Symbol["TestContext`"<>#1]])&;
In[3]:= x
During evaluation of In[3]:= x : Global`
Out[3]= x
In[4]:= aLongTestSymbolName
During evaluation of In[4]:= aLongTestSymbolName : Global`
During evaluation of In[4]:= aLongTestSymbolName : TestContext`
Out[4]= aLongTestSymbolName
In[5]:= Names["Global`*"]
Out[5]= {aLongTestSymbolName,x}
In[6]:= Names["TestContext`*"]
Out[6]= {TestContext`aLongTestSymbolName}
मुझे विश्वास है कि "aLongTestSymbolName"
Global`
संदर्भ में नहीं होना चाहिए। क्या कोई देख सकता है कि मैंने क्या गलत किया है या यदि मैंने दस्तावेज़ीकरण का गलत व्याख्या किया है?
नोट: दोनों संदर्भों में बनाए गए प्रतीक को उपर्युक्त लिंक में स्वचालित हाइलाइटिंग का विकल्प नहीं है। विचार चर के लिए "x"~~___
जैसे कुछ प्रतीक नामों को आरक्षित करना है और कार्यों के लिए "f"~~___
और फिर उचित हाइलाइट किए गए संदर्भ में प्रतीकों को स्थानांतरित करने के लिए $NewSymbol
में स्ट्रिंग पैटर्न का उपयोग करना है।
डब्ल्यू - असल में, आपके उदाहरण में 'एक सेकेंड सिंबल' दोनों 'ग्लोबल' '' '' '' '' '' '' '' '' '' '' ' क्या आपको लगता है कि दस्तावेज़ीकरण गलत है? शायद यह एक पुराने संस्करण में काम किया लेकिन टूट गया और कोई भी ध्यान नहीं दिया ... मुझे लगता है मुझे डब्लूआरआई से पूछना चाहिए। – Simon
@ सिमॉन, यह सही है। मेरा मुद्दा यह था कि यह अभी भी 'ग्लोबल '' 'न्यूजिमबोल' द्वारा लगाए गए किसी भी चीज़ से स्पष्ट रूप से स्वतंत्र रूप से स्वतंत्र रूप से बनाया गया है, और 'प्रिंट' /' अगर 'आदि समस्या से संबंधित नहीं हैं। मुझे आशा है कि माइकल, डैनियल, या साशा जवाब के साथ रुक जाएंगे। –
ऐसा लगता है कि हमारे स्थानीय मित्रवत डब्ल्यूआरआई कर्मचारियों ने बंद कर दिया है - इसलिए मैंने डब्लूआरआई को एक बग रिपोर्ट भेजी। – Simon