如何改變細胞的$ contextPath中不使用Prepend
的contextPath中:細胞
$ContextPath = Prepend[$ContextPath, "PackageName`"]
我是在爲$ContextPath
文檔環顧四周,我決定在那裏來評估第一輸入單元格。
評估前:
後評價:
我猜測,這裏的區別是,當這個文件被寫入WebServices
對於沒有啓用寫它的人。我們可以看到Global
位於該單元的上下文中,因爲這已經被明確提及。看看Cell > Show Expression
的表達式。
選項CellContext
設置爲全局。現在,讓我們製作一個新單元並評估$Context
。
這意味着,細胞內我不能使用任何我在其他筆記本電腦所創建的全局對象。我們可以通過更改單元格的CellContext選項來添加Global。我們通過顯示錶達和編輯來做到這一點。當你評估你會看到上下文已經改變爲全局。現在,只是爲了讓它在我們剛剛將環境更改爲全局的單元格中試用。
Print["Outside Module = ", $ContextPath]
Module[{},
Print["Inside Module = ", $ContextPath];
Manipulate[
Print["Inside Manipulate = ", $ContextPath];
Row[{
Plot[x, {x, -3, 3}, PlotRange -> {{-3, 3}, {-3, 3}}]
}],
{{p1, {-1, 2}}, Locator, Appearance -> "L1"}
]
]
你得到的東西是這樣的:
爲什麼上下文更改內部操縱?在其他筆記本內部,這不會發生。我猜測它與參考樣式表的設置有關,但我無法弄清楚。我們如何才能臨時更改文檔筆記本的設置,以便我們可以在整個筆記本中使用全局上下文?
我仍然不明白爲什麼我得到了我在我的問題描述的行爲,但我得到了它通過編輯樣式表來修復。我只是重新定義了輸入風格。原來,如果你修改輸入和輸出都有'CellContext - > Notebook',那麼你在Manipulate內部和外部得到相同的上下文。無論如何,謝謝。 – jmlopez