让我们说我有一个命名空间foo
现在,我希望销毁所有oo的所有实例:foo中的对象创建的类,没有删除foo(我想要它的'"常规" namesapce变量和procs)。
我怎么能完成它?我知道怎么做一个类的partcioular名称,但希望它适用于所有类。在诸如SCHEME / Perl之类的语言中,这种区别很容易实现。在像Ruby这样的语言中,你只需要取消所有非标准类,并使其成为可能。另一个有效选项就是搜索。
到目前为止,我发现我需要搜索info commands ::foo:
中存在但不在info procs ::foo::
中的所有列表项。但是,我不知道知道它是否安全"或者是否有一种更优雅的方式来完成它。谢谢。
答案 0 :(得分:1)
直接的方法是浏览命名空间中的命令列表并检查它们是否是对象:
foreach cmd [info commands ::foo::*] {
if {[info object isa object $cmd]} {
$cmd destroy
# You could also use: rename $cmd ""
}
}
我实际做的是让所有对象成为特定类的实例(可能通过mixin),然后核对该类,它会自动取出所有实例(以及你所做的任何子类。有问题的课程可能只是一个没有特殊行为的标记。