itcl的任何替代品::在原生OO中找到?

时间:2016-02-25 09:48:40

标签: tcl itcl

在原生OO中是否有替代itc :: find。

我需要删除特定命名空间中的所有类 我的代码运行如下:

foreach class [::itcl::find classes ::MYNAMESPACE::*] {catch {::itcl::delete class $class}}

我如何在原生OO中执行此操作?

2 个答案:

答案 0 :(得分:2)

最简单的方法是让所有类子类化为不需要做任何事情的虚拟类,比如说MYNAMESPACE::DeletionToken。然后,只需删除MYNAMESPACE::DeletionToken destroy的虚拟类;然后,所有子类和实例将被自动地自动屠杀。这也适用于mixins和元类。还要记住,TclOO支持多重继承,所以这些都不需要太多地干扰你现有的代码。

答案 1 :(得分:0)

好的 - 以下是:

 foreach class [info class instances oo::class ::MYNAMESPACE::*] {
      catch {$class destroy}
 }