変数に関する重要な規則は、グローバル変数は禁止されているということです。Vivado Tcl Store リンターは、スクリプト内のグローバル変数をチェックし、グローバル変数が定義されているとエラー メッセージを表示します。
アプリに含まれる複数のプロシージャで変数を共有する必要がある場合は、その名前空間内で宣言します。これには、キーワード variable
を使用して名前空間内で変数を作成します。このように作成した変数は、グローバル変数のように使用できますが、その名前空間内のみで使用可能です。
次のコードでは、同じ名前空間に含まれるすべてのプロシージャで共有可能な変数 verbose
を作成しています。この変数は 0 に初期化されます。
namespace eval ::tclapp::mycompany::template {
variable verbose 0
}
プロシージャ内でこの変数にアクセスするには、プロシージャ内で変数をキーワード variable
を使用して宣言します。
次に例を示します。
proc ::tclapp::mycompany::template::::my_command1::my_command1 { args } {
variable verbose
# The variable verbose can be accessed here
set verbose 1
}
proc ::tclapp::mycompany::template::my_command1::helper1 { args } {
variable verbose
# The variable verbose can be accessed here
if {$verbose} {
..
}
}
注記: 変数
verbose
には、完全な名前空間修飾子を使用すれば、グローバル名前空間を含むどの名前空間からでもアクセスできます。次に例を示します。set ::tclapp::mycompany::template::verbose 1