2011-07-29 19 views
8

Chúng tôi có thể xóa tất cả các biểu tượng trong một ngữ cảnh cụ thể bằng cách sử dụng Remove["context`*"]. Nhưng có thể tự xóa "context`" khỏi hệ thống để nó không còn được liệt kê trong Contexts[] nữa không?Có thể xóa "context`" khỏi danh sách Contexts đã tải [] không?

+2

'CleanSlate' sẽ không làm điều này? – tomd

+0

Tôi không thấy làm thế nào nó có thể được thực hiện. Nếu bạn đang gặp vấn đề với các bối cảnh xung đột thì tôi sẽ loại bỏ ngữ cảnh khỏi '$ ContextPath' để nó không gây rắc rối cho tôi nữa. – jmlopez

+1

@TomD Vâng, như Bill Rowe đã cho thấy trong [câu trả lời MathGroup của anh ấy] (http://groups.google.com/group/comp.soft-sys.math.mathematica/msg/de14f4aff3c6e780), '' AppendTo [$ ContextPath , "context'"]; CleanSlate ["context'"] '' sẽ làm điều này (nếu '' "context'" '' không có trong '$ ContextPath' ban đầu khi' CleanSlate.m' được đọc trong). Nhưng nhanh chóng tìm kiếm mô tả 'CleanSlate' trong tệp' CleanSlate.m' cho thấy nó chỉ xóa bỏ '' "context'" '' ** cùng với tất cả các ngữ cảnh con của nó ** để có bối cảnh này được xóa tự động. –

Trả lời

6

Theo như tôi có thể nói (đoán), ngữ cảnh sẽ tự động bị xóa khỏi Contexts[] khi nó trở nên trống (không có biểu tượng). Ít nhất, điều này xảy ra trong các bài kiểm tra của tôi. Dưới đây là một:

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 

này cũng có thể giải thích tại sao gọi Contexts[] mất một phần khá lớn của một giây - hệ thống phải kiểm tra tất cả các bối cảnh hay không nó là trống rỗng. Dù sao, câu trả lời cho câu hỏi của bạn có vẻ đơn giản - xóa tất cả các ký hiệu và ngữ cảnh sẽ bị xóa khỏi Contexts[]. Điều này cũng làm việc cho các bối cảnh được tải bởi hệ thống - bạn có thể thử một số (ví dụ: XML'), mặc dù không cần phải nói đây không phải là một thực hành tốt, để nói rằng ít nhất.

+0

Điều này không có tác dụng vì gói của tôi vẫn còn trong '$ ContextPath', ví dụ: 'Needs' sẽ không tải lại. Bất kỳ ý tưởng tại sao? –

+0

@ThomasFankhauser Không có ý tưởng. Nhưng tôi đã thảo luận ở đây một cái gì đó khác. Tạo một ví dụ nhỏ khép kín để minh họa vấn đề của bạn và hỏi về M.SE - bằng cách này bạn sẽ có nhiều ánh mắt hơn về vấn đề của mình. –

Các vấn đề liên quan