2011-07-29 4 views
8

Remove["context`*"]を使用して、特定のコンテキスト内のすべてのシンボルを削除できます。しかし"context`"自体をシステムから削除して、それがContexts[]にリストされないようにすることは可能ですか?読み込んだContexts []のリストから "context`を削除することはできますか?

+2

「CleanSlate」はこれを行いませんか? – tomd

+0

私はそれがどのようにできるかわかりません。競合するコンテキストに問題がある場合は、 '$ ContextPath'からコンテキストを削除して、それ以上の問題を引き起こさないようにします。 – jmlopez

+1

@TomDはい、Bill Roweが[彼のMathGroupの回答](http://groups.google.com/group/comp.soft-sys.math.mathematica/msg/de14f4aff3c6e780)で示したように、 '' AppendTo [$ ContextPath 、 "context'"]; CleanSlate ["context'"] ''( '' ContextPath'が '' CleanSlate.m'が読み込まれたとき '' context'' '' 'が' $ ContextPath'になかった場合) ''はこれを行います。しかし、 'CleanSlate.m'ファイルの' CleanSlate'の記述をすばやく見てみると、自動的に削除されるこのコンテキストを持つために、 '' context'''''''をすべてのサブコンテキストとともにパージするだけです。 –

答えて

6

私が知る限り(推測すると)、コンテキストは空になると(シンボルがない)Contexts[]から自動的に削除されます。少なくとも、これは私のテストで起こります。ここでは1です:

In[1]:= 
BeginPackage["Test`"] 
EndPackage[] 

Out[1]= Test` 

In[3]:= MemberQ[Contexts[],"Test`"] 
Out[3]= False 

In[4]:= Test`a 
Out[4]= a 

In[5]:= MemberQ[Contexts[],"Test`"] 
Out[5]= True 

In[6]:= Remove["Test`*"] 
In[7]:= MemberQ[Contexts[],"Test`"] 

Out[7]= False 

Contexts[]を呼び出すと第二のかなりの割合を取る理由も説明できるかもしれない - システムは、それが空であるかどうか、すべてのコンテキストを確認する必要があります。とにかく、あなたの質問への答えは単純です - すべての記号を削除し、コンテキストはContexts[]から削除されます。これはシステムによって読み込まれたコンテキストでも機能します。たとえば、これは良い例ではありませんが、言うまでもなく、試してみてください(XML')。

+0

'$ ContextPath'にパッケージが残っているので、これは私のためには機能しません。 'Needs'はそれをリロードしません。どんな考え? –

+0

@ThomasFankhauserいいえ。しかし、私はここで何か別の話をしていました。あなたの問題を説明するための自己完結型の小さな例を作って、M.SEについて尋ねます - この方法で、あなたはあなたの問題についてもっと目を向けるでしょう。 –

関連する問題