在本机OO中找到itcl::的替代品吗?

在本机OO中找到itcl::的替代品吗?,tcl,itcl,Tcl,Itcl,在本机OO中是否有itc::find的替代品 我需要删除特定命名空间中的所有类 我的代码运行方式如下: foreach class [::itcl::find classes ::MYNAMESPACE::*] {catch {::itcl::delete class $class}} 如何在本机OO中执行此操作?确定-以下操作: foreach class [info class instances oo::class ::MYNAMESPACE::*] { catch {$c

在本机OO中是否有itc::find的替代品

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

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

如何在本机OO中执行此操作?

确定-以下操作:

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

最简单的方法是使所有类都成为一个不需要做任何事情的伪类的子类,比如说
MYNAMESPACE::DeletionToken
。然后,只需使用
MYNAMESPACE::DeletionToken destroy
删除该伪类;然后,所有子类和实例都将被自动整齐地销毁。这也适用于mixin和元类。还请记住,TclOO支持多重继承,因此所有这些都不需要对现有代码造成太大的干扰。

混合使用元类时会出现问题。大多数人不使用它们,但它们确实存在。谢谢Donal,我没有使用过元类-但是捕获不能防止在销毁元类时出现任何错误。这也意味着元类不会被删除,但如果一个人不使用元类,这是否仍然是一个问题?