ネイティブ OO で itc::find に代わるものはありますか。
特定の名前空間のすべてのクラスを削除する必要があります。コードは次のように実行されます。
foreach class [::itcl::find classes ::MYNAMESPACE::*] {catch {::itcl::delete class $class}}
ネイティブ OO でこれを行うにはどうすればよいですか?
これを行う最も簡単な方法は、すべてのクラスのサブクラスを、何もする必要のないダミー クラスにすることですMYNAMESPACE::DeletionToken
。次に、そのダミー クラスをMYNAMESPACE::DeletionToken destroy
;で削除します。すべてのサブクラスとインスタンスは、自動的にきれいに解体されます。これは、ミックスインとメタクラスでも機能します。また、TclOO は多重継承をサポートしているため、既存のコードをそれほど変更する必要がないことも覚えておいてください。
わかりました-次はそれを行います:
foreach class [info class instances oo::class ::MYNAMESPACE::*] {
catch {$class destroy}
}