私は名前空間fooを持っているとしましょう。
私はfoo内でオブジェクト作成クラスをすべて削除したいと思っていますが、fooを削除しないでください(通常のnamesapce変数とprocsが必要です)。 どうすれば完了できますか?私はクラスのパートシェアーの名前のためにする方法を知っていますが、すべてのクラスのためにそれをしたいです。 SCHEME/Perlなどの言語では、この区別は簡単です。 Rubyなどの言語では、すべての非標準クラスを無効にするだけです。それはit.Another有効なオプションは、検索することです。
これまでのところ、info commands ::foo:
に存在するすべてのリスト項目を検索する必要があることがわかりましたが、info procs ::foo::
にはありませんでした。しかし、それが "安全"か、もっとエレガントな方法があるかはわかりませんそれを得ること
ありがとう。TCL内の名前空間にあるすべてのクラスのインスタンスを表示する
0
A
答えて
1
直接的な方法は、名前空間内のコマンドのリストを通過し、彼らはオブジェクトをしているかどうかをチェックすることです:私はが実際に行うには、すべてのオブジェクトのインスタンスを作成しているあろうこと
foreach cmd [info commands ::foo::*] {
if {[info object isa object $cmd]} {
$cmd destroy
# You could also use: rename $cmd ""
}
}
(おそらくミックスインを介して)特定のクラスを削除してから、自動的にすべてのインスタンス(およびそれを作成したサブクラス)を自動的に取り出します。問題のクラスは、特別な振る舞いを持たないマーカーに過ぎません。
関連する問題
- 1. TCL内の名前空間にprocをコピーする
- 2. 名前空間内のクラス
- 3. 名前空間内にあるクラスのfriend関数の定義。
- 4. TCLの名前空間の変数
- 5. 名前空間内のクラス内のfloatにアクセスする
- 6. 名前空間内のすべての名前空間を再帰的に取得する方法
- 7. 名前空間名に変数tclを使用する
- 8. TCL内のすべてのソースファイルを一覧表示するコマンド
- 9. 名前空間内でlinqクラスを非表示にしますか?
- 10. あるインタプリタからtcl名前空間の内容を取得し、別のインタプリタに渡します
- 11. C++ - クラスの名前空間
- 12. PHP他の名前空間からすべてのクラスをインポートする方法
- 13. PHP:名前空間のない別のクラスにある名前空間クラスの外にある関数にアクセスするには?
- 14. ある名前空間を別の名前空間に置き換える
- 15. 名前空間内にヘッダファイルを含めるべきですか?
- 16. 名前空間クラスとインスタンスのjavascriptの規約?
- 17. XML文書内のすべての名前空間を特定する方法
- 18. メソッドへのインスタンス名前空間のインポート
- 19. 名前空間をstdClassのインスタンスに設定する方法は?
- 20. 名前空間内のプライベートクラス
- 21. 名前空間内のコンストラクタ
- 22. 名前空間の内側にあるビュー内の名前空間の外にあるレール部分をどのようにレンダリングしますか?
- 23. TCLの名前空間変数にアクセスする最速の方法
- 24. 名前空間内のすべての要素を見つける
- 25. 現在の名前空間で文字列でクラスをインスタンス化する
- 26. Tcl - 名前空間とパッケージを複数のファイルに分割する
- 27. すべての名前空間とプラグインをリストする(Octobercms)
- 28. クラスをフォルダに移動した後にすべてのクラスファイルの名前空間名を更新する
- 29. javascriptの名前空間の内部でクラスを拡張するには?
- 30. 'using'は名前空間内か外部にあるべきですか?