在原生OO中是否有替代itc :: find。
我需要删除特定命名空间中的所有类 我的代码运行如下:
foreach class [::itcl::find classes ::MYNAMESPACE::*] {catch {::itcl::delete class $class}}
我如何在原生OO中执行此操作?
答案 0 :(得分:2)
最简单的方法是让所有类子类化为不需要做任何事情的虚拟类,比如说MYNAMESPACE::DeletionToken
。然后,只需删除MYNAMESPACE::DeletionToken destroy
的虚拟类;然后,所有子类和实例将被自动地自动屠杀。这也适用于mixins和元类。还要记住,TclOO支持多重继承,所以这些都不需要太多地干扰你现有的代码。
答案 1 :(得分:0)
好的 - 以下是:
foreach class [info class instances oo::class ::MYNAMESPACE::*] {
catch {$class destroy}
}