【发布时间】:2011-12-16 07:30:26
【问题描述】:
有多种有用的Internal`context函数,如InheritedBlock、Bag and StuffBag等,还有很多有用的Developer`函数。
我希望公开这些符号的选择,以便可以在没有上下文名称的情况下简单地处理它们,但我不想通过将 Internal` 和 Developer` 添加到 $ContextPath 来公开所有这些符号。
我可以使用代理符号,例如Bag = Internal`Bag,但这既不干净也不完全正确,因为它是一个参考,例如属性不会被继承。
有没有办法选择性地公开我想要的符号,而不诉诸上面的 kluge?
【问题讨论】:
-
+1 在
Internal`和Developer`中有很多有用的隐藏函数。你可以编写一个包装函数来实现你的 kludge 属性等...... -
@Simon,是的,我可以,但即使这样通常也没有必要,因为头部首先评估。这本身并不是一个真正的问题,但不知何故它似乎不正确。
-
相当令人惊讶的是,不使用
Unprotect或类似工具,可以使用Context[symbol] = "context`"重新定义System`或Internal`符号的上下文。但是,这会将符号从其原始上下文中删除,这是不可接受的。有没有办法给一个符号分配两个不同的上下文? -
@belisarius re:你的问题,这很可能是处理这个问题的最好或唯一的方法。但是,我知道它是一个指针,而不是符号本身,出于某种原因,这让我很困扰。
标签: wolfram-mathematica symbols contextpath