変数の共有 - 2023.2 日本語

Vivado Design Suite ユーザー ガイド: Tcl スクリプト機能の使用 (UG894)

Document ID
UG894
Release Date
2023-11-17
Version
2023.2 日本語

変数に関する重要な規則は、グローバル変数は禁止されているということです。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