Tclで静的変数を宣言できますか?
私は未知のコマンドエラーを捕まえるために特定の関数を使用しています。そして、私は未知のコマンドの最初の出現時にエラーメッセージを出力したいので、proc
の静的リストのように保つ必要があります。それは可能ですか?Tclの静的変数
Q
Tclの静的変数
6
A
答えて
4
それとも、ただまっすぐにグローバル変数を使用することができます
set varList {}
proc useCount {value} {
global varList ;
lappend varList $value
}
useCount One
useCount Two
puts $varList
2
号しかし、あなたは、例えばPROC名をインデックスとグローバル(通常は名前空間)のアレイを使用することができます
namespace eval foo {
variable statics
array set statics {}
}
...
proc ::foo::bar args {
variable statics
upvar 0 statics([lindex [info level 0] 0]) myvar
# use myvar
}
2
Tclはありませんが静的変数をサポートしていません。グローバル変数または名前空間内の変数を使用する代わりに、クラス内のメソッドとしてプロシージャを実装することもできます([incr tcl]またはsnitを参照)。静的変数を実装する必要がある場合、Tcl Wikiにはこの問題について説明するページがあります。http://wiki.tcl.tk/1532
0
グローバル変数が嫌いです(小さなスクリプトがない限り)@kostixと@Jacksonのソリューションを組み合わせます:
namespace eval foo {
variable varList {}
}
proc foo::useCount {value} {
variable varList
lappend varList $value
}
foo::useCount One
foo::useCount Two
puts $foo::varList
関連する問題
- 1. [incr Tcl]での静的関数継承
- 2. Tclスクリプトのエラーの静的検出
- 3. 関数内静的変数と静的クラス変数の比較
- 4. 静的変数内部の静的メソッド
- 5. 静的メソッドの静的変数
- 6. 静的メソッドと静的変数のjava
- 7. 静的変数
- 8. 静的変数
- 9. パブリック静的変数とプライベート静的変数の違い
- 10. C99の静的変数を持つ初期静的変数
- 11. Python ...静的変数?
- 12. PHP静的変数
- 13. C++静的変数。
- 14. アクセス静的変数
- 15. 静的メンバ変数
- 16. 静的変数リンクエラー
- 17. 静的変数値
- 18. 静的サーブレットコンテキスト変数
- 19. パイソン:静的変数
- 20. クリスタル静的変数
- 21. 静的変数を非静的変数に割り当てる
- 22. DotNet:DLLの静的変数
- 23. Javaの静的変数
- 24. Javaの非静的変数
- 25. asp.netの静的変数
- 26. C#の静的変数
- 27. コード内の静的変数
- 28. VBAの静的変数
- 29. マクロ内の静的変数
- 30. クラスの静的メンバ変数
アップデート:一般的な考え方については、http://wiki.tcl.tk/memoizingも参照してください。 – kostix