2

ネイティブ OO で itc::find に代わるものはありますか。

特定の名前空間のすべてのクラスを削除する必要があります。コードは次のように実行されます。

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

ネイティブ OO でこれを行うにはどうすればよいですか?

4

2 に答える 2

2

これを行う最も簡単な方法は、すべてのクラスのサブクラスを、何もする必要のないダミー クラスにすることですMYNAMESPACE::DeletionToken。次に、そのダミー クラスをMYNAMESPACE::DeletionToken destroy;で削除します。すべてのサブクラスとインスタンスは、自動的にきれいに解体されます。これは、ミックスインとメタクラスでも機能します。また、TclOO は多重継承をサポートしているため、既存のコードをそれほど変更する必要がないことも覚えておいてください。

于 2016-02-25T10:47:14.740 に答える
0

わかりました-次はそれを行います:

 foreach class [info class instances oo::class ::MYNAMESPACE::*] {
      catch {$class destroy}
 }
于 2016-02-25T10:03:34.120 に答える