2011-12-14 37 views
13

में निकालें मेथेमेटिका में, प्रलेखन:अंतर और <a href="http://reference.wolfram.com/mathematica/ref/ClearAll.html" rel="noreferrer">ClearAll</a> राज्यों के लिए मेथेमेटिका

ClearAll[symb1, symb2, ...]
प्रतीकों के साथ मूल्यों, परिभाषाओं, गुण, संदेश, और चूक साफ करता है।

ClearAll["form1", "form2", ...] 

लेकिन वहाँ भी समारोह Remove, जिसके लिए प्रलेखन कहते है::

यह भी एक समान स्वरूप कहां किसी भी मान/परिभाषाएँ जो एक इनपुट स्ट्रिंग प्रतिमान से मेल खाने साफ कर सकते हैं का समर्थन करता है

Remove[symbol1, ...]
प्रतीकों को पूरी तरह से हटा देता है, ताकि उनके नाम अब गणित द्वारा मान्यता प्राप्त न हों।

यह उसी पैटर्न आधारित स्ट्रिंग इनपुट का भी समर्थन करता है जो ClearAll समर्थन करता है।

मेरे लिए ऐसा लगता है कि दोनों कार्य एक ही सटीक चीज़ को पूरा करते हैं। क्या एक या दूसरे का उपयोग करने में कोई व्यावहारिक अंतर है?

मुझे पता है कि अगर मैं किसी प्रतीक को एक विशेषता देता हूं, तो Clear इसे हटा नहीं देगा लेकिन ClearAll और Remove होगा। लेकिन ऐसा लगता है कि Remove और ClearAll एक ही काम कर रहे हैं।

+0

यह हालिया मैथग्रुप धागा प्रासंगिक प्रतीत होता है: https://groups.google.com/group/comp.soft-sys.math.mathematica/browse_thread/thread/3db59462237f509f। विशेष रूप से उस धागे में ऑलेक्ज़ेंडर रसपुतिनोव की तीसरी पोस्ट पर देखें (यह धागे की शुरुआत से 15-वें है) - जब वह 'निकालें' की आवश्यकता हो सकती है और यह विशेष बनाता है तो वह कुछ अच्छे कारण देता है। –

उत्तर

13

ClearAll प्रतीक तालिका में प्रतीक छोड़ देता है:

In[1]:= x=7; 

In[2]:= ?x 
Global`x 

x = 7 

In[3]:= ClearAll[x] 

In[4]:= ?x 
Global`x 

Remove प्रतीक तालिका से निकालता है:

In[5]:= Remove[x] 

In[6]:= ?x 

Information::notfound: Symbol x not found. 

एक कारण यह उपयोग करने के लिए Remove बजाय ClearAll है एक प्रतीक एक और प्रतीक छुपाता है अगर अपने $ ContextPath नीचे और नीचे। यहाँ एक काल्पनिक उदाहरण है:

In[1]:= $ContextPath = { "Global`", "System`" }; 

In[2]:= Global`Sin[x_] := "hello" 

Sin::shdw: Symbol Sin appears in multiple contexts {Global`, System`} 
    ; definitions in context Global` 
    may shadow or be shadowed by other definitions. 

In[3]:= Sin[1.0] 

Out[3]= hello 

In[4]:= ClearAll[Sin] 

In[5]:= Sin[1.0] 

Out[5]= Sin[1.] 

In[6]:= Remove[Sin] 

In[7]:= Sin[1.0] 

Out[7]= 0.841471 

Remove उपयोग करने के लिए एक और कारण है कि नोटबुक इंटरफ़ेस केवल ज्ञात प्रतीकों जब आप संपादित करें चुनें> पूरा चुनाव (या किसी Mac, प्रेस कमान-के) भी शामिल है।

+1

दिलचस्प। क्या कोई यथार्थवादी मामला है जहां आपको वास्तव में प्रतीक तालिका से कुछ हटाना पड़ सकता है? –

+0

मैंने अपना जवाब संशोधित किया है। –

+4

एक सामान्य मामला तब होता है जब कोई एक निहित फ़ंक्शन का उपयोग करने से पहले पैकेज लोड करना भूल जाता है - उदाहरण के लिए ''क्लाउडपाथ []' को कॉल करने से पहले' 'JLink'"] '' '' ''। यदि अपेक्षित 'ज़रूरतों' को बाद में बुलाया जाता है, तो आप लाल रंग में दोनों प्रतीकों को दिखाते हुए सामने वाले अंत के साथ 'ग्लिंक' जावा क्लासपाथ ''' ग्लोबल 'जावा क्लासपाथ' 'के साथ समाप्त होते हैं। 'हटाएं [ग्लोबल 'जावा क्लासपाथ]' 'स्थिति को हल करता है। – WReach

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

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