問題タブ [incr-tcl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
class - Incr Tcl を使用したクラス オブジェクトの階層構造
次のようなクラス/サブクラスオブジェクトの階層構造を実装しようとしています。
ここでの主なポイントは、各メイン クラスで同じ名前を持つ異なるサブクラスを宣言できることです (そして、それらの変数は独立しています)。
(注: ここでは、実行中に作成されるクラスオブジェクトの階層について話しているのであって、異なるクラスの遺産についてではありません。)
Tcl に固有の高度な側面 (名前空間、スコープなど) にあまり詳しくないので、次のコードを試しました。
の 2 回目のオカレンスを作成するときにエラーが発生しますSubClassB
。
変数が2つの異なるスコープを持つことができる方法を理解していないSubClassesList
が、「同じ」名前空間/名前(デバッグ出力から)があるため、おそらくクラスの名前空間についてのポイントがありません。
メソッドで新しい名前空間を作成しようとしましたnewSubClass
が、問題が解決されなかったり、いくつかの不可解な変数の名前空間エラーが追加されたりしませんでした...
そのようなことを実行するアイデアはありますか?
PS: [incr Tcl] を使用して、既存の環境との互換性の理由からプロジェクトにクラスを実装しましたが、他の OO 実装の方が優れている/簡単だと思う場合は、お知らせください...
編集 :
namespace eval
+を使用して、オブジェクト名に対応する新しい名前空間にオブジェクトnamespace inscope
を作成することで解決策を見つけました:subClass
mainClass
tcl - iwidgets::combobox の選択値 tcl/tk を変更します
iwidgets::combobox
tcl/tk で選択した値を変更するには?
以下を試しましたが、うまくいきません。( set ::check_tech "bbb"
)
tcl - ::itcl::delete が「無効なコマンド名」というエラーをスローします
オブジェクトとクラスを削除するために itcl delete コマンドを使用しています。ただし、tcl インタープリターは「無効なコマンド名 "delete"」と表示します。部分的なコード スニペットを次に示します。
ありがとう、ぼっぷ