在本机 OO 中是否有 itc::find 的替代品。
我需要删除特定命名空间中的所有类我的代码运行如下:
foreach class [::itcl::find classes ::MYNAMESPACE::*] {catch {::itcl::delete class $class}}
我如何在本机 OO 中执行此操作?
最简单的方法是让你的所有类子类化一个不需要做任何事情的虚拟类,比如MYNAMESPACE::DeletionToken
. 然后,只需使用MYNAMESPACE::DeletionToken destroy
;删除该虚拟类 然后所有子类和实例将被整齐地自动屠宰。这也适用于 mixins 和元类。还要记住,TclOO 支持多重继承,因此这些都不需要过多地干扰您现有的代码。
好的 - 以下是:
foreach class [info class instances oo::class ::MYNAMESPACE::*] {
catch {$class destroy}
}