global
コマンドだけではなく、それの上部に、手順のどこにでも置くことができます。しかし
proc yourprocedure {...} {
set portIndex [something here]
# ...
global txresults_$portIndex rxresults_$portIndex
set txresults_$portIndex [stc::get $generator1 \
-children-GeneratorPortresults]
set rxresults_$portIndex [stc::get $Analyzer1 \
-children-AnalyzerPortresults]
# ...
}
...
それはおそらく少し迷惑である可変という名前の変数を扱うよう(あなたの代わりに$…
の[set …]
でそれを行うことができ、それを行うことは悪い考えです、または別名とすることによりupvar
、それでも迷惑です)。それが理解し、コードがはるかに容易になりその代わりに、あなたはおそらく、代わりに配列を使用する必要があります。
proc yourprocedure {...} {
global txresults rxresults
set portIndex [something here]
# ...
set txresults($portIndex) [stc::get $generator1 \
-children-GeneratorPortresults]
set rxresults($portIndex) [stc::get $Analyzer1 \
-children-AnalyzerPortresults]
# ...
}
あなたがそれを行う、あなたはグループのすべての可変-という名前の変数のコレクションに変数 - 配列 - あなたはを取得しますその後、ちょうど行って、他の場所でそれらを参照してください。これらの選択肢よりもわかりやすさの点では優れてい
global txresults
do-something-with $txresults($portIndex)
:
global txresults_$portIndex
do-something-with [set txresults_$portIndex]
を
upvar ::txresults_$portIndex txr
do-something-with $txr
'global'またはスコープ解決演算子' :: 'のどちらかがジョブを実行します。例えば。 'set :: txresults_ $ portIndex' –
Dinesh
また、 'txresults_ $ portIndex'のような名前があるときは、' txresults($ portIndex) '(代わりに' global txresults'または 'txresults 'それをグローバルにする)。 –